2013-09-24 87 views
2

我已經使用scrapy框架編寫了一個爬蟲程序來解析產品網站。抓取程序突然停止,但未完成完整的解析過程。我在這方面進行了很多研究,大部分答案都表明我的抓取工具正在被網站攔截。有沒有什麼機制可以檢測我的蜘蛛是被網站攔截還是自行停止?爲什麼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

我可能應該說'LOG_LEVEL ='DEBUG''查看所有請求的URL –

回答

0

到目前爲止,我知道,因爲蜘蛛:

  1. 有一些隊列或URL的池刮/分析與解析 方法。您可以指定,將url綁定到特定的方法,或者讓默認的'parse'完成這項工作。
  2. 從解析方法中,您必須返回/產生另一個請求,提供該池或項目
  3. 當池用完urls或發送停止信號時,spider停止爬網。

,如果你共享你的蜘蛛的代碼將是很好,所以我們可以檢查,如果這些結合是正確的。例如,很容易錯過使用SgmlLinkExtractor錯誤地綁定一些綁定。

+0

我正在嘗試這個例子http://mherman.org/blog/2012/11/08/遞歸地 - 刮-web-pages-with-scrapy/ –

+1

這是你的確切的蜘蛛代碼? – Talvalin