Python API网页爬取遇阻:请求法兰克福证交所API返回空结果
解决API请求返回空JSON的问题
你的请求返回空{},核心原因是使用的X-Client-TraceId、X-Security和Client-Date都是固定的过期值——这类头部属于网站动态生成的验证字段,过期后服务器会拒绝返回有效数据。
解决方案1:简化请求头(优先尝试)
去掉那些过期的特殊验证头,改用通用的浏览器请求头模拟正常访问:
import requests url = "https://api.boerse-frankfurt.de/v1/data/master_data_bond?isin=XS0216072230" headers = { "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36", "Accept": "application/json, text/plain, */*" } response = requests.get(url, headers=headers) # 先检查响应状态码,确认请求是否成功 print("响应状态码:", response.status_code) data = response.json() print(data)
解决方案2:获取实时有效验证头
如果方案1无效,需要从浏览器中抓取当前有效的验证字段:
- 打开浏览器访问目标页面
https://www.boerse-frankfurt.de/bond/xs0216072230 - 按F12打开开发者工具,切换到Network标签
- 筛选请求类型为
XHR,找到包含master_data_bond的API请求 - 查看该请求的Request Headers,复制当前有效的
X-Client-TraceId、X-Security和Client-Date(注意Client-Date要和当前时间匹配) - 将这些实时值替换到你的请求头中,重新发起请求
额外提示
- 若返回403/401状态码,说明网站的验证机制更新,可能需要补充更多请求头(比如
Referer、Origin) - 这类内部API没有公开文档,字段规则可能随时变化,需要定期验证请求有效性
内容的提问来源于stack exchange,提问作者Yogita Negi
相关产品推荐
相关产品推荐

