使用Scrapy Request上传验证码图像

时间:2017-08-13 15:15:24

标签: python http post scrapy recaptcha

我正在尝试使用2Captcha.com服务来解决验证码。首先我要保存验证码图像:

urllib.urlretrieve(captcha_image_link, 'captcha.jpg')

接下来,我需要将图像上传到服务器以识别它。使用普通请求就像

一样简单
files = {'file': open('captcha.jpg', 'rb')}
payload = {'key': TWOCAPTCHA_APIKEY, 'method': 'post'}
request = requests.post('http://2captcha.com/in.php', files=files, data=payload)

但是如何使用Scrapy提出相同的请求?我的意思是,如何将图像文件附加到POST请求?这可能吗?如果没有,那么我想知道在Scrapy蜘蛛内部使用普通的POST请求(以及urlretrieve)是否太糟糕了?

1 个答案:

答案 0 :(得分:0)

您可以使用Scrapy发送POST请求(请参阅documentation),但有两件事需要考虑:

  1. 您必须自己对文件进行编码,requests.post为您执行此操作。
  2. Scrapy会异步发送请求,当您需要解决验证码时,这可能不是您想要的。
  3. 因此,我认为使用Scrapy spider中目前的方法没有错。