2013-09-24 1 views
2

제품 사이트를 구문 분석하기 위해 scrapy 프레임 워크를 사용하여 크롤러를 작성했습니다. 크롤러는 전체 구문 분석 프로세스를 완료하지 않고 갑자기 중지됩니다. 나는 이것에 대해 많은 연구를했으며, 대부분의 응답은 내 크롤러가 웹 사이트에 의해 차단되고 있음을 나타냅니다. 내 거미가 웹 사이트에 의해 멈추고 있는지 아니면 스스로 멈추는 지 감지 할 수있는 메커니즘이 있습니까?왜 치료 크롤러가 멈 춥니 까?

다음은 스파이더의 정보 수준 로그 항목입니다. 거미가 닫히기 전에

2013-09-23 09:59:07+0000 [scrapy] INFO: Scrapy 0.18.0 started (bot: crawler) 
2013-09-23 09:59:08+0000 [spider] INFO: Spider opened 
2013-09-23 09:59:08+0000 [spider] INFO: Crawled 0 pages (at 0 pages/min), scraped 0 items (at 0 items/min) 
2013-09-23 10:00:08+0000 [spider] INFO: Crawled 10 pages (at 10 pages/min), scraped 7 items (at 7 items/min) 
2013-09-23 10:01:08+0000 [spider] INFO: Crawled 22 pages (at 12 pages/min), scraped 19 items (at 12 items/min) 
2013-09-23 10:02:08+0000 [spider] INFO: Crawled 31 pages (at 9 pages/min), scraped 28 items (at 9 items/min) 
2013-09-23 10:03:08+0000 [spider] INFO: Crawled 40 pages (at 9 pages/min), scraped 37 items (at 9 items/min) 
2013-09-23 10:04:08+0000 [spider] INFO: Crawled 49 pages (at 9 pages/min), scraped 46 items (at 9 items/min) 
2013-09-23 10:05:08+0000 [spider] INFO: Crawled 59 pages (at 10 pages/min), scraped 56 items (at 10 items/min) 

다음은 로그 파일에 디버그 레벨 항목의 마지막 부분입니다 :

2013-09-25 11:33:24+0000 [spider] DEBUG: Crawled (200) <GET http://url.html> (referer: http://site_name) 
2013-09-25 11:33:24+0000 [spider] DEBUG: Scraped from <200 http://url.html> 

//scrapped data in json form 

2013-09-25 11:33:25+0000 [spider] INFO: Closing spider (finished) 
2013-09-25 11:33:25+0000 [spider] INFO: Dumping Scrapy stats: 
    {'downloader/request_bytes': 36754, 
    'downloader/request_count': 103, 
    'downloader/request_method_count/GET': 103, 
    'downloader/response_bytes': 390792, 
    'downloader/response_count': 103, 
    'downloader/response_status_count/200': 102, 
    'downloader/response_status_count/302': 1, 
    'finish_reason': 'finished', 
    'finish_time': datetime.datetime(2013, 9, 25, 11, 33, 25, 1359), 
    'item_scraped_count': 99, 
    'log_count/DEBUG': 310, 
    'log_count/INFO': 14, 
    'request_depth_max': 1, 
    'response_received_count': 102, 
    'scheduler/dequeued': 100, 
    'scheduler/dequeued/disk': 100, 
    'scheduler/enqueued': 100, 
    'scheduler/enqueued/disk': 100, 
    'start_time': datetime.datetime(2013, 9, 25, 11, 23, 3, 869392)} 
2013-09-25 11:33:25+0000 [spider] INFO: Spider closed (finished) 

아직도 구문 분석하는 나머지 페이지,하지만 거미 정류장이 있습니다.

+0

크롤러는 일부 제품 세부 정보 페이지를 구문 분석하고 모든 제품 정보 페이지를 구문 분석하지 않고 중간에 중지합니다. –

+0

settings.py에서'LOG_LEVEL = 'INFO''을 사용하면 콘솔 로그에서 충분한 정보를 얻을 수 있습니다. 여기에 게시 할 수도 있습니다. 도움이 될 것입니다. –

+0

나는 모든 요청 URL을보기 위해'LOG_LEVEL = 'DEBUG'라고 말했을 것입니다. –

답변

0

지금까지 내가 거미에 대해 알고 :

  1. 일부 큐 또는 URL의 풀을 긁어 될 수 있습니다/ 방법을 구문 분석과 구문 분석. 특정 메소드에 URL을 지정하거나 바인드하거나 기본 '구문 분석'을 사용하여 작업을 수행 할 수 있습니다.
  2. 구문 분석 방법에서 다른 요청을 반환하거나 산출해야합니다. 해당 풀 또는 항목을 공급하려면
  3. 풀에 풀이 없거나 중지 신호가 전송되면 스파이더는 크롤링을 중지합니다.

스파이더 코드를 공유하면 해당 바인딩이 올바른지 확인할 수 있습니다. 예를 들어 SgmlLinkExtractor를 사용하여 일부 바인딩을 실수로 놓치기 쉽습니다.

+0

이 예를 시도하고 있습니다. http://mherman.org/blog/2012/11/08/ recursively-scraping-web-pages-with-scrapy/ –

+1

정확한 스파이더 코드입니까? – Talvalin

관련 문제