【问题标题】:Simulating ajax request with python using the requests lib使用 requests 库用 python 模拟 ajax 请求
【发布时间】:2016-02-10 21:23:40
【问题描述】:

当我打电话给https://www.shirtinator.de/cT=search/motives&sq=junggesellenabschied 在上部,您可以切换到下一个侧面并在显示的 50 和 100 个动机之间切换。

我尝试编写代码,使用 pythons 请求,post 请求包括 ajax 脚本的参数,分别在 50 和 100 之间更改以更改边。

我使用chromes开发者工具检测post请求的post formsform数据。

这是我的脚本,它没有提供所需的数据。

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

感谢您的支持。

最好的

【问题讨论】:

  • 我不知道正确的响应是什么样的,但您可能只需要使用json 参数而不是data 参数。这会产生更长、更正确的响应。
  • 正确的响应应该是 html 和 xml 代码。可以在chrome下看到正确的响应-->开发者工具-->网络-->选择xhr requst-->响应。

标签: python json ajax python-requests


【解决方案1】:

当您在创建 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"]}

【讨论】:

  • 谢谢@noamk,到目前为止运行良好:) 你也对code"xajaxr":"1455134430801" 参数负责吗?最佳鲍勃174
  • 看起来像一个时间戳(见en.wikipedia.org/wiki/Unix_time):>>> datetime(1970, 1, 1) + timedelta(milliseconds=1455134430801) datetime.datetime(2016, 2, 10, 20, 0 , 30, 801000)
猜你喜欢
  • 1970-01-01
  • 2012-10-20
  • 1970-01-01
  • 1970-01-01
  • 2013-03-12
  • 2017-12-25
  • 1970-01-01
  • 2020-02-11
  • 2019-01-11
相关资源
最近更新 更多