動的ページ スクレイピングのために Selenium を Scrapy と統合する
Scrapy を使用して動的 Web ページからデータをスクレイピングしようとすると、標準のクロール プロセスでは不十分になる可能性があります。これは、URL を変更しない「次へ」ボタンをクリックするなど、ページネーションが非同期読み込みに依存している場合によく発生します。この課題を克服するには、Scrapy スパイダーに Selenium を組み込むことが効果的な解決策となります。
Spider への Selenium の配置
Scrapy スパイダー内での Selenium の最適な配置は、次のとおりです。特定のスクレイピング要件について。ただし、いくつかの一般的なアプローチは次のとおりです。
Scrapy で Selenium を使用する例
たとえば、eBay でページ分割された結果をスクレイピングするとします。 。次のスニペットは Selenium と Scrapy を統合する方法を示しています:
import scrapy from selenium import webdriver class ProductSpider(scrapy.Spider): name = "product_spider" allowed_domains = ['ebay.com'] start_urls = ['https://www.ebay.com/sch/i.html?_odkw=books&_osacat=0&_trksid=p2045573.m570.l1313.TR0.TRC0.Xpython&_nkw=python&_sacat=0&_from=R40'] def __init__(self): self.driver = webdriver.Firefox() def parse(self, response): self.driver.get(response.url) while True: next = self.driver.find_element_by_xpath('//td[@class="pagn-next"]/a') try: next.click() # Get and process the data here except: break self.driver.close()
代替: ScrapyJS ミドルウェアの使用
場合によっては、ScrapyJS ミドルウェアの使用で十分な場合があります。 Selenium を必要としない Web ページの動的部分。このミドルウェアを使用すると、Scrapy フレームワーク内でカスタム JavaScript を実行できます。
Selenium と Scrapy を統合する追加の例と使用例については、提供されているリンクを参照してください。
以上がSelenium を Scrapy と統合して動的 Web ページを効率的にスクレイピングするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。