使用请求lib使用python模拟ajax请求

时间:2016-02-10 21:23:41

标签: python json ajax python-requests

当我致电https://www.shirtinator.de/cT=search/motives&sq=junggesellenabschied时 在上方,您可以切换到下一侧并切换显示的50到100个动机。

我尝试使用pythons请求编写包含ajax脚本参数的post请求,分别在50和100之间进行更改以改变方面。

我使用了chromes开发人员工具来检测post请求的post formform数据。

这是我的脚本,它无法提供所需的数据。

import requests
import json

url = "https://www.shirtinator.de/?cT=search/motives&sq=junggesellenabschied"
data1= {"xajax":"searchBrowse","xajaxr":"1455134430801","xajaxargs[]":"1","xajaxargs[]":"true","xajaxargs[]":"true","xajaxargs[]":"motives","xajaxargs[]":"100"}
r = requests.post(url, data=data1)
result = r.text
print result

感谢您的支持。

最佳

1 个答案:

答案 0 :(得分:0)

在创建dict(data1)时多次使用相同的键时,最后一个值将覆盖所有先前出现的值。 在你的情况下,你得到的是:

In [2]: data1= {"xajax":"searchBrowse","xajaxr":"1455134430801","xajaxargs[]":"1","xajaxargs[]":"true","xajaxargs[]":"true","xajaxargs[]":"motives","xajaxargs[]":"100"}

In [3]: data1
Out[3]: {'xajax': 'searchBrowse', 'xajaxargs[]': '100', 'xajaxr': '1455134430801'}

如您所见,xajaxargs []参数不包含它应包含的所有值作为数组。以请求理解的方式执行此操作的正确方法是使xajaxargs []的值成为这些值的列表:

In [4]: data1= {"xajax":"searchBrowse","xajaxr":"1455134430801","xajaxargs[]":["1", "true", "true", "motives","100"]}