如何使用 Python 获取网页中的 Ajax 请求
我现在有一个需求:获取页面中发出去的 Ajax 请求,需要知道这些请求的 url 地址。现在的做法是手工的方式,在 Chrome 浏览器中打开页面,然后通过开发者工具打开 Network ,查看所有的 XHR 请求,然后把请求的地址复制下来。现在需要把上述手工方式转换为程序自动抓取的方式,有没有什么好的方法,是不是需要模拟浏览器环境去执行页面的 js ,还是怎样?谢谢了。
如何使用 Python 获取网页中的 Ajax 请求
2 回复
要抓Ajax数据,直接requests不行,得用浏览器开发者工具分析。先按F12打开Network面板,刷新页面,筛选XHR/Fetch请求,找到目标数据包,复制为cURL命令,再用工具转成Python代码。
比如抓某个商品页的动态价格:
import requests
headers = {
'authority': 'api.example.com',
'accept': 'application/json',
'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36'
}
params = {'productId': '12345'}
response = requests.get('https://api.example.com/price', headers=headers, params=params)
data = response.json()
print(data['currentPrice'])
关键点:1)仔细检查请求头,特别是Authorization、Referer这些;2)注意参数可能被加密,得逆向JS;3)有些用POST带表单数据。用requests.Session保持会话,处理cookies。
简单说就是:分析请求→模拟请求→解析数据。
有人知道吗

