用Python Requests包,如何实现页面内POST?

这些天使用python的requests包实现了模拟登录,代码如下: import requests s = requests.session() l…
关注者
141
被浏览
40,024

16 个回答

你的form data不对吧?三个参数method,params,_xsrf,其中params是个dict

你的代码是直接给了一个dict,method成为了这个dict中一项,另外也没有提供xsrf,会被认为是跨域请求

我去试了下,觉得500的原因应该是params的格式问题,你提交的内容没有符合标准,而知乎后台又没有做对应的异常处理,只是简单地扔一个500回来。把提交的data直接换成类似

method=next&params=%7B%22xxxxxxxxx%22%2C%22order_by%22%3A%22created%22%2C%22offset%22%3A60%7D&_xsrf=xxxxxxxxx 

的一个字符串就可以了。返回值是一段json数据。这个字符串你可以在chrome的develop tools里面点view source看到。

另外推荐你一个chrome插件叫

Postman

,用来模拟请求相当方便。

晕倒。

form data发送的内容应该是:

k:v, k1:v2....

而v、v2等不能是个字典,所以用json.dumps转成字符串就可以了。

而你的payload指向一个字典可以post出去是因为requests做了处理。