Python Requests请求耗时过长,无法找到合适的XHR请求链接
解决方案
一、先修正代码中的错误
你当前代码里的URL末尾多了一个多余的双引号,这会导致请求无效,先修正:
import requests s = requests.Session() headers = { 'User-Agent': 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/104.0.5112.79 Safari/537.36', 'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8', 'Accept-Language': 'en-US,en;q=0.5', 'Referer': 'https://www.calorie-charts.info/', 'Connection': 'keep-alive' } # 移除末尾多余的双引号 url = 'https://www.calorie-charts.info/food/all/banana' s.headers.update(headers) # 设置超时时间,避免无限等待 r = s.get(url, timeout=15) print(r.text)
二、加快请求速度的优化点
- 补充完整请求头:服务器可能会对请求头不全的请求做延迟处理,添加
Accept、Accept-Language、Referer等字段,模拟真实浏览器的请求行为,大概率能减少响应延迟。 - 设置超时时间:添加
timeout参数,避免请求因网络或服务器问题无限挂起。 - 禁用不必要的功能:如果不需要响应中的Cookie,可以在Session中关闭Cookie,或者使用
stream=True分块接收响应(适合大页面)。
三、寻找数据来源的方法
如果页面没有明显的XHR/Fetch请求,试试这两种方式:
- 检查页面内嵌的Script标签:很多网站会把初始数据放在
script标签里(比如以window.__DATA__或类似格式存储的JSON),可以直接从返回的HTML中提取这部分内容,不需要额外请求。 - 过滤Network面板的所有请求:刷新页面时,在Network面板勾选
All而非仅XHR/Fetch,查看是否有JSON、CSV格式的静态资源请求,或者参数中包含banana、food的接口,有些网站会用普通GET请求返回数据而非XHR。
内容的提问来源于stack exchange,提问作者DJM
相关产品推荐
相关产品推荐

