2017-08-13 18 views
4

2Captcha.comサービスを使用してcaptchaを解決しようとしています。まず、キャプチャ画像を保存しています。Scrapyリクエストでcaptcha画像をアップロード

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も同様)を使うのはあまりにも悪い考えかどうかを知りたいですか?

+0

なぜあなたはscrapyでリクエストする必要がありますか。この場合、解決されたcaptchaの応答がほしいので、次の要求を行うことができます。だから '輸入依頼' – surfer190

+0

私は自分自身でそれを明確にしたいだけです - Scrapyスパイダーの中で '要求 'を使うのは安全で正しいのですか?プレーンな要求はそれを遅くするだろうか? – sky

+0

場合がございます。あなたはこの興味深い記事を読むことができますが、私はそれが「正しい」か「間違っている」かについて話すことはできません:http://www.scrapinginsider.com/2016/01/scrapy-urllib2-requests-beautifulsoup-lxml.html – surfer190

答えて

0

あなたはScrapyを(documentationを参照)を使用してPOSTリクエストを送信することができますが、考慮すべき二つのものがあります。

  1. あなたはrequests.postがあなたのためにこれを行いながら、ファイルを自分でエンコードしなければならないでしょうが。
  2. Scrapyは要求を非同期で送信しますが、これはおそらくcaptchaを解決する必要があるときには必要ではありません。

このように、Scrapyスパイダーの内部で現在のaproachを使用しても何も問題はありません。

関連する問題