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

Postman可正常返回数据的Python GET请求代码无法运行问题排查

问题分析:Postman可正常请求的API在Python requests中失效

我有一个在Postman中可正常返回数据的URL:
https://www.tablebuilder.singstat.gov.sg/api/table/resourceid?isTestApi=true&keyword=manufacturing&searchoption=all
但Postman生成的以下Python代码无法运行:

import requests
url = "https://www.tablebuilder.singstat.gov.sg/api/table/resourceid?isTestApi=true&keyword=manufacturing&searchoption=all"
response = requests.request("GET", url)
print(response.text)

该代码过去曾正常工作,请问可能的原因是什么?是否有永久修复方案?

可能的原因

  • URL转义字符错误:Postman生成的URL里把&转成了HTML实体&,直接用在Python请求中会被服务器当成参数的一部分,导致参数解析混乱(比如实际请求的参数变成isTestApi=true和amp;keyword=manufacturing,而非预期的keyword=manufacturing)。
  • 请求头差异触发反爬:Postman会自动带上浏览器风格的请求头(如User-Agent、Accept),而Python requests的默认请求头可能被服务器识别为非合法请求,触发拦截机制。
  • API接口规则变更:目标网站可能更新了API的参数要求、认证方式或访问限制,旧的请求逻辑不再符合当前接口规范。

修复方案

1. 修正URL转义字符

把URL中的&替换回&,确保参数能被服务器正确解析:

import requests
url = "https://www.tablebuilder.singstat.gov.sg/api/table/resourceid?isTestApi=true&keyword=manufacturing&searchoption=all"
response = requests.get(url)
print(response.text)

2. 模拟浏览器请求头

如果修正URL后仍失效,添加浏览器样式的请求头绕过反爬拦截:

import requests

url = "https://www.tablebuilder.singstat.gov.sg/api/table/resourceid?isTestApi=true&keyword=manufacturing&searchoption=all"
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",
    "Accept": "application/json, text/plain, */*"
}
response = requests.get(url, headers=headers)
print(response.text)

3. 验证API接口状态

检查目标网站的官方文档(若存在),确认参数规则、认证要求是否发生变更。如果接口新增了认证机制,需在请求中添加对应的令牌或认证信息。

永久修复建议

  • 避免直接复制Postman生成的带HTML转义的URL,手动检查并修正转义字符;
  • 统一使用requests.get()简化代码,同时保持请求头与主流浏览器一致;
  • 定期测试接口连通性,出现失效时优先排查参数格式、请求头和接口规则变化。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.27 01:34:57