scrapy重新调用之前已调用过的函数

是这样的,我用pytesseract和PIL的Image合起来用的识别验证码成功率大概在7成左右。
所以,我想当出现验证码失败时就再次重复[爬网站,获取验证码,提交数据]这几个步骤。
我是写成A->B->C这样一环扣一环的,所以我想在C提交数据时说验证码失败时再次调用A,但是由于scrapy好像都是弄成异步的,调着调着C就先返回了。 # 这里是我理解错误了,其实是scrapy默认不支持重复爬URL
请问怎么弄?
顺便问一下大家处理验证码失败是怎么处理的?

阅读 3.6k
1 个回答

1.scrapy是默认不允许再爬同样的URL的,要是想重新再爬相同的URL,则要在setting.py里添加一行:

DUPEFILTER_CLASS = 'scrapy.dupefilter.BaseDupeFilter'

然后在请求那里再添加多一个参数:dont_filter=True
参考:这个

2.验证码失败时怎么处理呢?答案就是尽量模仿浏览器的行为。当你输入验证码出错时会怎样?它会给你换张验证码图片,所以我们要做的就是获取这个第二张图片的url,开个工具看看headers是什么,然后加到请求上去就行了。不行就第三张,第四张,直到行为止。