2
저는 이것에 상당히 익숙하며 약 1 주 동안 거미/크롤러를 조사하고 있습니다.Scrapy Cloud에서 스파이더를 실행하는 동안 일관성없는 오류가 발생했습니다.
나는 Scrapy에서 거미를 설정 해왔다. 어제 내 완성 된 거미를 출시했습니다. 모든 것이 이제는 튀어 나오는이 오류를 제외하고는 매끄럽게 진행되는 것 같습니다.
다음 오류가 아니라 거미 같은 페이지 (또는 시간)에 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)
안녕하세요, 답변 해 주셔서 감사합니다. if 문은 코드에 이미 추가되어 있습니다 (else는 제외). 또한 로그 페이지에서 URL 페이지가 증가 된 다음 추적된다는 것을 알기 때문에 페이지가 나타납니다. 거미가 '다음 페이지'개체로 너무 빠르게 크롤링하는 것과 관련이있을 수 있습니까? 원본 게시물에 오류가 발생할 가능성이 높은 코드 부분을 추가했습니다. – Stijn
'response.css ('div.indexering> a :: attr (href)'). extract()'를 실행하면 빈/데이터 없음이 생길 수 있고'[-1 ]'결과가 있는지 없는지 항상 확인하십시오. 이것이 내가 코드에서 변경 한 것입니다. –
나는 당신이 의미하는 것을 지금 본다. 도와 주셔서 감사합니다! 이 문제가 해결되었습니다. – Stijn