Scrapy可以通過在settings.py文件中設置HTTPERROR_ALLOWED_CODES參數來處理HTTP錯誤狀態碼。該參數可以接收一個列表,其中包含允許的HTTP錯誤狀態碼。默認情況下,Scrapy會允許處理所有的HTTP錯誤狀態碼。如果需要處理特定的HTTP錯誤狀態碼,可以在settings.py文件中添加如下代碼:
HTTPERROR_ALLOWED_CODES = [404, 500]
上面的代碼表示允許處理404和500錯誤狀態碼。如果遇到其他的HTTP錯誤狀態碼,Scrapy將會觸發HTTPError異常,并終止當前的請求。可以通過在spider中重寫handle_httpstatus_list方法來處理HTTP錯誤狀態碼,例如:
class MySpider(scrapy.Spider):
name = 'my_spider'
def __init__(self, *args, **kwargs):
super(MySpider, self).__init__(*args, **kwargs)
self.handle_httpstatus_list = [404, 500]
def parse(self, response):
if response.status == 404:
self.logger.error('Page not found: %s' % response.url)
elif response.status == 500:
self.logger.error('Internal server error: %s' % response.url)
# 其他處理邏輯
在上面的例子中,重寫了handle_httpstatus_list方法,并指定了需要處理的HTTP錯誤狀態碼。在parse方法中,根據不同的HTTP錯誤狀態碼執行相應的處理邏輯。