无法使用JSON主体复制POST请求

时间:2018-12-22 21:56:19

标签: web-scraping scrapy

我正在使用Scrapy将POST请求复制到网站,并且我确定我传递了正确的表单参数,但网站却以某种方式没有响应。

从Chrome复制curl请求得到(已修改):

curl 'https://example.com/somepath' -H 'origin: https://example.com/' -H 'x-requested-with: XMLHttpRequest' -H 'pragma: no-cache' -H 'user-agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.110 Safari/537.36' -H 'content-type: application/json'--data '{"foor":"var"}' --compressed

这是我的Scrapy请求:

FormRequest(url="https://example.com/somepath", formdata={'foo': 'var'})

1 个答案:

答案 0 :(得分:1)

您将缺少包含Content-Type标头的信息,而且您将无法使用FormRequest进行该请求。只需将正常的Request与正确的身体配合使用即可:

import json

...

Request(
    url="https://example.com/somepath", 
    body=json.dumps({'foo': 'var'}), 
    headers={'Content-Type': 'application/json'},
)