2013-06-04 106 views

回答

12

使用「errback可」像 errback=self.error_handler 的請求,其中error_handler是一個函數(就像回調函數)在此功能檢查錯誤代碼,使替代請求。

看到scrapy文檔中errback可: http://doc.scrapy.org/en/latest/topics/request-response.html

+0

謝謝,我已經自己解決了這個問題,正如你所說的。 –

6

只需設置handle_httpstatus_list = [404, 500]並檢查parse方法中的狀態碼。這裏有一個例子:

from scrapy.http import Request 
from scrapy.spider import BaseSpider 


class MySpider(BaseSpider): 
    handle_httpstatus_list = [404, 500] 
    name = "my_crawler" 

    start_urls = ["http://github.com/illegal_username"] 

    def parse(self, response): 
     if response.status in self.handle_httpstatus_list: 
      return Request(url="https://github.com/kennethreitz/", callback=self.after_404) 

    def after_404(self, response): 
     print response.url 

     # parse the page and extract items 

另見:

希望有所幫助。

+0

這不包括總失敗,例如DNS - 只有當網絡服務器響應時 – HaveAGuess