scrapyページジャンプ後にデータを取得
1344 ワード
最初のサイトはhrefなので、ジャンプしてRequestを送る必要があります.
以下は独自のコードです.
全体的な考え方はparseの自動呼び出しでhrefを取得し,その後Requestリクエストで新しいページコンテンツを取得し,さらに処理することである.
登ったページにn層hrefがある場合は、n回のRequestを呼び出し、自分がデータを取得したいページに要求するまで登って処理します.そうしないと、Requestを続け、ジャンプアクセスを行います(私のは1層hrefだけです.つまりhrefを調整します).
実は内蔵関数parseの原理も似ています
こんにちは
以下は独自のコードです.
def parse(self, response):
href_set = []
list = response.xpath("//div[@style='display:none;']//li/a/@href").extract() # href
for i in range(0, 50, 1): # 50
href_set.append(list[i])
for href in href_set:
yield scrapy.Request(url=href, callback=self.new_parse)
# Request url, new_parse ,
def new_parse(self, response):
myitem = TutorialItem()
myitem['article_title'] = response.xpath("//h1[@class='main-title']/text()").extract()
myitem['article_content'] = response.xpath("//div[@class='article']//p/text()").extract()
# ,
myitem['article_image'] = response.xpath("//div[@class='img_wrapper']//img/@src").extract_first()
# item pipeline
yield myitem
全体的な考え方はparseの自動呼び出しでhrefを取得し,その後Requestリクエストで新しいページコンテンツを取得し,さらに処理することである.
登ったページにn層hrefがある場合は、n回のRequestを呼び出し、自分がデータを取得したいページに要求するまで登って処理します.そうしないと、Requestを続け、ジャンプアクセスを行います(私のは1層hrefだけです.つまりhrefを調整します).
実は内蔵関数parseの原理も似ています