爬虫小知识(一):Scrapy爬虫 捕获403状态码抛出CloseSpider异常

1、爬数据的时候,有时会遇到被该网站封IP等情况,response的状态码为403,那么这时候我们希望能够抛出
CloseSpider的异常。
2、但是如scrapy官网提到的,Scrapy默认的设置是过滤掉有问题的HTTP response(即response状态码不在200-300之间)。因此403的情况会被ignore掉,也就是及时我们用response.status == 400判断没有作用,因为只有status处于200-300的请求才会被处理。
3、如果我们想捕获或者处理403,或者其它如404或者500,这种请求时,
如下:

spider的类中把403放在handle_httpstatus_list中

class MySpider(CrawlSpider):
    handle_httpstatus_list = [403]

或者

将403放在HTTPERROR_ALLOWED_CODES设置中,settings中增加

HTTPERROR_ALLOWED_CODES = [403]

4、 设置完handle_httpstatus_list或者HTTPERROR_ALLOWED_CODES之后,就可以通过判断response.status == 403抛出CloseSpider异常,结束抓取。

原文地址:https://blog.csdn.net/haipengdai/article/details/48526507

你可能感兴趣的:(爬虫)