私は単純なPOSTリクエストコードを持っています。Python request.post()はPython Scrapyリクエストに変換されても機能しません
headers = {
dictionary of headers
}
params = (
('param1', '0'),
('param2', '5668294380'),
('param3', '8347915011'),
)
response = requests.post('https://website.com', headers=headers, params=params, data=__data)
これはスタンドアロンのPythonプログラムとして完全に機能します。
しかし、私は、Python Scrapyでこれをやりたい
Request(url='https://website.com',callback=self.callback_fun, headers=headers, body=__data, method="POST")
それはURLがPOSTリクエスト
を扱うことができないことを私に応答を与える、私はそれが私に同じ応答を与える
FormRequest(url='https://website.com',callback=self.callback_fun, headers=headers, body=__data)
を試してみました。
私は
Request(url='https://website.com?' + urllib.urlencode(self.params),callback=self.callback_fun, headers=headers, body=__data, method="POST")
をしようとしたが、それは私に400 Bad Request
いただきましたを与えますか?純粋なPython Scriptが動作しますが、Scrapyでは動作しません。
主な問題は、Scrapyを使用してparams=params
を送信する方法です。 Scrapyはbody
パラメータ
実際のWebサイトではなくhttps://httpbin.org/で両方の方法を試して、実際に送信されたリクエストを確認してください。 Scrapyがいくつかのヘッダーを上書きする可能性があります。 –
@AshishNitinPatil私はそのURLをChrome Dev ToolsからcURLとしてコピーしました。そのcURLはShell/Terminalで完璧に動作し、同じcURLをPythonがhttps://curl.trillworks.com/ツールを使用してPOSTに要求するように変換しました。そして、Pythonコードも動作します! Scrapyだけでうまくいきません – Umair
URLではないので、httpbin.orgで調べて、あなたが得た応答を比較するようにお願いします。これはミラーのようなものなので、異なる方法から2つのリクエストの違いを知ることができます。 –