最近在爬一个网站,明显有反爬虫机制, 50 个 request 之后就变 500 internal error 。不换 ip 的话 4 , 5 天都不能访问了。参考教程用了 tor+polipo ,情况好了点但依旧有 10%的 500 。我有试 errback 调用方法,但 errback 没有被触发。用什么方法能捕捉到 500 错误,并且在调用我的方法重启 tor 。
1
d33n99 2016-04-22 03:33:07 +08:00 via iPhone 1
捕捉到 500 错误后并往 tor 的控制端口发送一个 new identity 命令
|
3
popil1987 2016-04-22 07:35:00 +08:00
response.status 不一定是 500 ,你要看成功和不成功的区别,如果一个 200 ,一个 404 ,那肯定是有区别的,并不要求一定得是 500 ,有区别就行。
如果都是 200 ,那就得比较一下内容有没有关键字或者字符串能识别出是成功或者不成功 |
4
knightdf 2016-04-22 08:55:12 +08:00 1
首先你得让 500 错误的 response 被返回 parse ,然后在做 status 检查,因为 scrapy 默认是会重试 5xx 并且不会触发 parse 的
|
5
d33n99 2016-04-22 17:52:13 +08:00
http://blog.csdn.net/haipengdai/article/details/48526507
不好意思,一开始没理解您 @lbfeng 的意思,没有用过 scrapy,不过这博文应该对你有帮助:-) |
8
lbfeng OP @d33n99 出现另一个问题,当又第一个 500 之后重新得到 identity 。但 scrapy 有多个线程会发送多个请求导致 Rate limiting NEWNYM request: delaying by x second(s)。
|