Scrapyでのリンクのたどり方
複数の方法があります。
scrapy.Request(URL,コールバックメソッド)
- URLは絶対URL(https://xxx.com)のみ
- レスポンスはコールバックメソッドで受け取ります。
response.follow(URL/Selector,コールバックメソッド)
- 相対URLにも対応
- a要素のSelectorから自動的にhrefを取得してくれる。
- レスポンスはコールバックメソッドで受け取ります。
一覧画面のページングを辿るサンプルコード
1 2 3 4 5 6 7 8 9 10 |
class SampleSpider(scrapy.Spider): name = "spider名" allowed_domains = ["www.xxx.com"] start_urls = ["https://www.xxx.com/1"] def parse(self, response): # 特定ページでの処理 next_page = response.xpath('次のページへのリンクボタンのXPath') if next_page: yield response.follow(url=next_page[0],callback=self.parse) |
url=next_page
次のページのリンクのSelectorを渡します。
callback=self.parse
単一ページで情報を取得する処理を記述します。そうすることであるページで「次へ」リンクがあるかぎりずっとループして処理をし続けてくれます。
一覧画面から詳細画面を辿って情報を取得するサンプル
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
class SampleSpider(scrapy.Spider): name = "spider名" allowed_domains = ["www.xxx.com"] start_urls = ["https://www.xxx.com/1"] def parse(self, response): # 一覧画面のitem一覧 items = response.xpath("一覧情報のxpath") for item in items: yield response.follow(url=itemxpath("詳細画面へのURLのxpath").get(),callback=self.parse_item) def parse_item(self, response): item_info = response.xpath("詳細画面の各情報のxpath") yield { 情報1: item_info.xpath(".情報1のXpath").get(), 情報2: item_info.xpath(".情報2のXpath").get() } |
ポイントとしては、parse_itemと詳細画面の情報を取得するためのメソッドを追加して呼び出します。
この記事へのコメントはありません。