これらの Web ストアには API があり、必要なデータを簡単に取得できるはずです。
とにかくスクレイピーを使いたい場合は、次のことに注意してください。
- これらの Web サイトはそれぞれ、異なる HTML コンテンツと読み込みメカニズムを持っています。つまり、サイトごとに異なる解析ルール、戦略が異なります。
- 見つけたいすべてのアイテムについて、複数の結果と価格が表示されます
- ajaxベースのページネーションに対処する必要があるかもしれません
スクレイピングが必要なサイト/ストアごとに個別のスパイダーを用意し、データをデータベースにパイプラインして、クロール後に分析/結合する方が良いようです。
ただし、1 つのスパイダーで amazon と ebay からタイトルを取得する方法の例を次に示します。allowed_domains
およびstart_urls
が設定されていないことに注意してください。start_requests
メソッドが使用されます。
from scrapy.http import Request
from scrapy.selector import HtmlXPathSelector
from scrapy.spider import BaseSpider
class GoodsSpider(BaseSpider):
name = 'goods'
def start_requests(self):
yield Request(url="http://www.amazon.com", callback=self.parse_amazon)
def parse_amazon(self, response):
hxs = HtmlXPathSelector(response)
print hxs.select('//title/text()').extract()[0]
yield Request(url="http://www.ebay.com", callback=self.parse_ebay)
def parse_ebay(self, response):
hxs = HtmlXPathSelector(response)
print hxs.select('//title/text()').extract()[0]