您如何知道 XHR 请求需要哪些参数?

Posted

技术标签:

【中文标题】您如何知道 XHR 请求需要哪些参数?【英文标题】:How do you know which parameters are needed for an XHR request? 【发布时间】:2015-10-05 17:47:56 【问题描述】:

我正在使用请求从http://fplstatistics.co.uk/Home/Events 获取 json 文件,为此我使用的是典型的

response = requests.get(url, params=params, headers=headers)

这里params 是一个大约 35 行的字典,我认为它相当大。您可以通过转到网络面板 -> XHR -> 标题 -> 查询字符串参数来查看这些参数。我想知道param 字典是否真的需要包含所有查询字符串参数,如果不需要,你怎么知道哪些是需要,哪些不是?

【问题讨论】:

【参考方案1】:

没有通用的答案,因为它完全是特定于网站的。您可以尝试&失败,尝试&失败,直到获得所需参数的列表。或者,您可能会停止考虑它,使用真正的浏览器。

示例(使用selenium 和无头PhantomJS 浏览器):

from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.support.wait import WebDriverWait


driver = webdriver.PhantomJS()
driver.get("http://fplstatistics.co.uk/Home/Events")

wait = WebDriverWait(driver, 10)
wait.until(EC.visibility_of_element_located((By.ID, "myDataTable")))

for title in driver.find_elements_by_css_selector("div[style*=underline]"):
    print(title.text)

打印:

Player Price Changes
Player Status Changes

【讨论】:

我发现唯一需要的参数是iDisplayLength,但我还有一个问题。假设我想获得 10 月 5 日所做的所有更改,例如,我可以将 iDisplayLength 设置为 30,所以我保证(我不会在 1 天内进行超过 30 次更改,所以这不是真的一个保证,但实际上是)它包括了 10 月 5 日所做的所有更改,然后过滤掉那些没有的更改。但是,我将如何获取在当前日期进行的更新?有什么想法吗?

以上是关于您如何知道 XHR 请求需要哪些参数?的主要内容,如果未能解决你的问题,请参考以下文章

如何在浏览器中查看ajax请求的url和参数

在赛普拉斯测试中加载页面后,如何可靠地等待 XHR 请求?

硬刮 API

如何检测 XHR 何时返回缓存的资源?

我如何知道 RandomizedSearchCV 测试了哪些参数?

在事件处理程序中发送没有 XHR 的 http 请求