You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Requests库爬取AJAX网站时XHR请求卡住无响应的问题求助

解决请求卡住无法获取AJAX数据的问题

看起来你的脚本一直卡住没输出,大概率是几个常见的爬坑点没注意到,我来帮你一步步排查解决:

1. 先修正URL里的转义字符

你URL里的&是HTML实体转义后的&,服务器没法正确解析这个转义字符,这很可能导致请求一直挂着得不到响应。把&换成正常的&就行,修正后的URL是:

https://prematch.planetwin365.it/api/mobileapp/v1.0/events/subevents/7/1?eventIds=7882&marketId=1

2. 必须模拟浏览器请求头

很多网站会直接拒绝没有User-Agent的请求,或者检查请求的来源合法性。你需要在请求里加上和浏览器一致的请求头,最关键的就是User-Agent,如果原XHR请求里有Referer也最好带上。

3. 给请求加上超时设置

你的代码没有设置超时,一旦服务器不响应,脚本就会无限等待。加上timeout参数,能让请求超时后抛出异常,方便你排查问题。

修正后的完整脚本

import requests

# 修正后的URL
url = 'https://prematch.planetwin365.it/api/mobileapp/v1.0/events/subevents/7/1?eventIds=7882&marketId=1'

# 模拟Chrome浏览器的请求头,你也可以换成自己常用浏览器的UA
headers = {
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/118.0.0.0 Safari/537.36',
    'Referer': 'https://prematch.planetwin365.it/'
}

try:
    # 发起GET请求,设置10秒超时
    resp = requests.get(url, headers=headers, timeout=10)
    # 主动检查响应状态码,如果是4xx/5xx直接抛出异常
    resp.raise_for_status()
    print(resp.text)
except requests.exceptions.RequestException as e:
    print(f"请求出错啦: {e}")

后续排查方向如果还是不行

  • 打开浏览器开发者工具,找到那个XHR请求,把所有Request Headers都复制到你的headers字典里(比如Accept、Accept-Language、X-Requested-With这些AJAX请求常见的头)。
  • 确认原XHR的请求方法:如果原请求是POST,那你需要把参数放到data或者json参数里,而不是拼在URL上。
  • 检查是否需要登录:如果这个接口需要登录权限,你得先模拟登录获取Cookie,然后在请求里带上cookies参数。
  • 反爬机制:如果以上都没用,可能网站有IP封禁或者验证码,这种情况可以试试换代理IP,或者放慢请求频率。

内容的提问来源于stack exchange,提问作者Longino

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.28 15:03:02