在爬蟲多次請求時,有些網站會出現反爬蟲措施:將請求鏈接重定向到一個提示404的鏈接或者驗證碼鏈接等阻止爬蟲的進行,如下為解決方案:
def start_requests(self): for i in self.start_urls: yield Request(i, meta={ 'dont_redirect': True, 'handle_httpstatus_list': [302] }, callback=self.parse) # 'dont_redirect': True是禁止重定向 # Request.meta 中的 handle_httpstatus_list 鍵可以用來指定每個request所允許的response code。
此外:
根據 HTTP標准 ,返回值為200-300之間的值為成功的resonse。
如果想處理在這個范圍之外的response,可以通過 spider的 handle_httpstatus_list
屬性或HTTPERROR_ALLOWED_CODES
設置來指定spider能處理的response返回值。
例如,如果想要處理返回值為404的response可以這么做:
class MySpider(CrawlSpider):
handle_httpstatus_list = [404]