需求:1.登录账户 2.提交答题
分析:
我的请求:
# 答题
answerUrl = 'https://bazhong.xueanquan.com/JiaTing/ajax/FamilyEduCenter.EscapeSkill.SeeVideo,FamilyEduCenter.ashx?_method=TemplateIn2&_session=rw'
aHeaders = {
'Host': 'bazhong.xueanquan.com',
'Origin':'https://bazhong.xueanquan.com',
'X-Requested-With':'XMLHttpRequest',
# application/json; charset=utf-8
# application/x-www-form-urlencoded
# text/xml
'Content-Type':'application/x-www-form-urlencoded',
'Referer': 'https://bazhong.xueanquan.com/JiaTing/EscapeSkill/SeeVideo.aspx?gid=486&li=980',
'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/65.0.3325.162 Safari/537.36',
'Cookie':'xxxxxxxxx'
}
http://blog.csdn.net/qin_zhangyongheng/article/details/7824435
参数的值得类型是不是不对,我看1上面的是数值型,你的是字符串型。
1、r = requests.post(url, data=json.dumps(payload))
2、r = requests.post(url, json=payload)
或者分别用以上2种方法试试。
通过charles工具抓包发现它的data是text格式,不是我们平常用的json字符串,也不是form-data表单,第一次遇到啊,真真是头疼了好几天。
解决方案:把所有参数直接拼成字符串即可,看它的参数形式,还是换行了,加上\n就可以了。
dataText = 'workid=4105\nfid=602\ntitle=喝水有学问\nrequire=\npurpose=\ncontents=\ntestwanser=0|0|0\ntestinfo=已掌握技能\ntestMark=100\ntestReulst=1\nSiteName=\nsiteAddrees=\nwatchTime=\nCourseID=980'
resAns = oneSession.post(answerUrl, data=dataText)
print resAns.text
问题解决了,很开心。但是总结一下不足:
1.在这个问题中没有对参数格式分析对,导致走了很多弯路,费了很多时间。
2.疏忽大意,犯了“灯下黑”的错误,调试网页源码文件中data的格式直接是个字符串时竟然没有想到手动构造,而是研究python中该怎么传值.....
另外,第一次使用charles软件,好用! 哈哈。
... 同一个网站 , 同一个问题.. 你咋解决的