2
これはかなり新しく、スパイダー/クローラーを約1週間は探しています。Scrapy Cloudでスパイダーを実行しているときに一貫性のないエラーが発生する
私はScrapyでスパイダーを設定しています。昨日私の完成したスパイダーを発売しました。すべてが今のところそしてこのポップアップする1つのエラーを除いて、滑らかに走るようです。クモで
次のエラーが同じページ(または時間)に4つのジョブで受信したがされていません。
next_page_url = response.css('div.indexering > a::attr(href)').extract()[-1]
IndexError: list index out of range
は、これらのジョブで、エラーが表示されたとき:
Job 1:
39: 2017-09-27 09:00:03 ERROR [scrapy.core.scraper] Spider error processing <GET https://www.baby-dump.be/zoeken/?zoek=*/&pnr=102> (referer: [https://www.baby-dump.be/zoeken/?zoek=*/&pnr=101][1])
Job 2:
46: 2017-09-27 10:00:05 ERROR [scrapy.core.scraper] Spider error processing <GET https://www.baby-dump.be/zoeken/?zoek=*/&pnr=98> (referer [https://www.baby-dump.be/zoeken/?zoek=*/&pnr=97][1])
Job 3:
55: 2017-09-27 12:00:07 ERROR [scrapy.core.scraper] Spider error processing <GET https://www.baby-dump.be/zoeken/?zoek=*/&pnr=159> (referer: [https://www.baby-dump.be/zoeken/?zoek=*/&pnr=158][1])
Job 4:
18: 2017-09-27 14:00:11 ERROR [scrapy.core.scraper] Spider error processing <GET https://www.baby-dump.be/zoeken/?zoek=*/&pnr=22> (referer: [https://www.baby-dump.be/zoeken/?zoek=*/&pnr=21][1])
エラーを正しく解釈すると、「次へ」ボタン(スパイダーが探している)が見つかりませんでした。
これは、ジョブを見ると、エラーが矛盾するためではありません。それはランダムな時間に現れます。
編集:以下にエラーが発生した箇所のコードを追加しました。
def parse(self, response):
#get all product detail pages links
urls = response.css('div.product-image > a::attr(href)').extract()
for url in urls:
url = response.urljoin(url)
yield scrapy.Request(url=url, callback=self.parse_details)
#get next page and follow
next_page_url = response.css('div.indexering > a::attr(href)').extract()[-1]
if next_page_url:
next_page_url = response.urljoin(next_page_url)
yield scrapy.Request(url=next_page_url, callback=self.parse)
こんにちはTarun、あなたの答えに感謝します。 ifステートメントは、コードにすでに追加されています(elseはありません)。ログには、urlページがインクリメントされ、その後に続くことがわかるため、このページも表示されます。それは、次のページのオブジェクトのためにあまりにも速くクロールするクモと関係がありますか? 元の投稿にエラーが発生する可能性が高い箇所にコードを追加しました。 – Stijn
'response.css( 'div.indexering> a :: attr(href)')。extract()'を実行すると、空白/データなしになり、 '[-1 ] '結果が存在するかどうかを確認することなく、常に。それが私のコードで変更されたものです。 –
私は今あなたが何を意味するかを見ます。助けてくれてありがとう!これは私の問題を修正しました。 – Stijn