Scrapy爬虫 捕获403状态码抛出CloseSpider异常

1、爬数据的时候,有时会遇到被该网站封IP等情况,response的状态码为403,那么这时候我们希望能够抛出
CloseSpider的异常。
2、但是如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中。如下就行。
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异常,结束抓取。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值