记一次python爬虫requests.post报错405,参数params、data、json用法

记一次python爬虫requests.post报错405,参数params、data、json用法,第1张

最近审批太多,需要手动上传,写了个爬虫进行自动上传审批,报错405,原来的代码是这样的

# 请求头
headers = {
    'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/89.0.4389.90 Safari/537.36',
    'Cookie': Cookie,
    'Referer': 'http://132.xxx.xx.xx:xxxx/xxxx.html?time={0}'.format(
        round(time.time() * 1000)),
    'X-Requested-With': 'XMLHttpRequest',
}

# 提交审批
def postApply(post_data):
    res = requests.post(
        url=ADDR_ADD_URL,
        headers=headers,
        data=post_data,
        timeout=3,
        allow_redirects=True
    )
    return res.status_code

分析错误原因为请求头限制'Accept': 'application/json, text/javascript, */*; q=0.01',即请求正文只能说json形式,这里却使用了data参数!那么params、data、json三个参数有什么区别呢:

  • params:会被加到url上去,成为url的一部分,是用来发送查询字符串的,我们是看得到的
  • data:它是用来发送正文的,表示使用application/from-urlencode方式提交请求,接收方body的值会是x=1&y=2这种
  • json:它也是用来发送正文的,表示使用application/json方式提交请求,接收方body值为json

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/langs/714432.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-04-24
下一篇2022-04-24

发表评论

登录后才能评论

评论列表(0条)

    保存