一、爬數據的時候,有時會遇到被該網站封IP等狀況,response的狀態碼爲403,那麼這時候咱們但願可以拋出
CloseSpider的異常。
二、可是如scrapy官網提到的,Scrapy默認的設置是過濾掉有問題的HTTP response(即response狀態碼不在200-300之間)。所以403的狀況會被ignore掉,意思就是咱們不是處理這個url 請求的response,直接就忽略,也就是及時咱們用response.status == 400判斷沒有做用,由於只有status處於200-300的請求才會被處理。
3. 若是咱們想捕獲或者處理403,或者其它如404或者500,這種請求時,咱們在spider的類中把403放在handle_httpstatus_list中。以下就行。
html
class MySpider(CrawlSpider): handle_httpstatus_list = [403]
或者將403放在HTTPERROR_ALLOWED_CODES設置中
即在settings中增長HTTPERROR_ALLOWED_CODES = [403], HTTPERROR_ALLOWED_CODES默認是[]
http://doc.scrapy.org/en/1.0/topics/spider-middleware.html#httperror-allowed-codes
4. 設置完handle_httpstatus_list或者HTTPERROR_ALLOWED_CODES以後,就能夠經過判斷response.status == 403拋出CloseSpider異常,結束抓取。scrapy