requests遇到的各种疑难post类型

自从用了requests,头也不疼了,腰也不酸了,唯一的问题就是遇到的post格式各种各样,简直是五花八门,今天把它列出来解决一下,前提你已经会了f12分析网页

一个key对应多个value

有些地方会遇到的如
regionCode = 5
regionCode =
regionCode =
regionCode =
就是有一个key对应一大堆value,其实这样可以在data里都写一遍(我记得好像是可以),除了这个还有API文档里的往里面传元祖列表,如

>>> payload = (('key1', 'value1'), ('key1', 'value2'))
>>> r = requests.post('http://httpbin.org/post', data=payload)

表单

就是最常见的form data里
cmd: getInfoList
pageIndex: 2
pageSize: 18
siteguid: d7878853-1c74-4913-ab15-1d72b70ff5e7
categorynum: 014001004
title:
这样的

data = {
'cmd' : 'getInfoList',
'pageIndex': '2',
'pageSize': '18'
}
requests.post(url, data=data)

就可以了,很简单

post是一个json

我遇到过一个这样的

{"token":"","pn":10,"rn":10,"sdt":"","edt":"","wd":"","inc_wd":"","exc_wd":"","fields":"title","cnum":"001","sort":"{\"webdate\":0}","ssort":"title","cl":200,"terminal":"","condition":[{"fieldName":"categorynum","equal":"003001","notEqual":null,"equalList":null,"notEqualList":null,"isLike":true,"likeType":2}],"time":null,"highlights":"title","statistics":null,"unionCondition":null,"accuracy":"","noParticiple":"0","searchRange":null,"isBusiness":"1"}:

第一次看到人傻了,介是嘛??
最后知道了这是个json string,按照dict那样的写法 然后用
data = json.dumps(data)传入post 或者 json = data 传入post就可以了

post被加密,在里面看到csrftoken

1、获取请求前,先去请求一次这个链接地址的Host,在这一次请求中获取Token,以及Cookie
2、用获取到的Token和Cookie作为头信息去请求传入链接地址
3、相当于多请求了一次这个请求链接地址的Host,必须要注意的是确定获取的Host返回头信息中包含有Set-Cookie字段,以及返回的内容中有包含Token的mate标签,存在这两个条件的时候,这个解决流程才可能实现
————————————————
版权声明:本文为CSDN博主「玉苑」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/weixin_36751895/article/details/79676146

在这里引用了网站上的一篇帖子,果然比自己写的清楚

除了post里有csrftoken,还有另一个信息被加密

这是我最近遇到过的终极问题,目前还没搞懂该怎么做,他是通过js里的函数,把加密信息从服务器传回来,导致post里的信息都获取不到(selenium的click就可以弱智的解决,但我就想用requests) 而且网站里的很多信息都是用js里的那个函数回传过来,真的是脑袋瓜子都大了,如果有有兴趣的大佬看到了,可以去试着做一做,顺便告诉我怎么做的就最好了T.T这是链接:http://ncztb.nc.gov.cn/nczbw/jyxx/002001/002001002/MoreInfo.aspx?CategoryNum=002001002

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值