从交互式图表底层API爬取数据遇405错误求助
解决API请求405错误问题
405错误的核心原因是请求方法不被接口允许——你用POST请求该API,但实际上这个接口仅支持GET请求。
修正方案:
- 直接使用GET请求获取数据,无需POST方法,也不需要传递
method='POST'参数 - 保留必要的请求头(如User-Agent),Cookie可根据实际情况携带(部分接口可能不需要)
正确代码示例:
import requests 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" url = 'https://ember-data-api-scg3n.ondigitalocean.app/ember.json?sql=select+variable%2C+year%2C+share_of_generation_pct+from+generation_yearly+where+variable+in+%28%27Clean%27%2C+%27Coal%27%29+and+country_or_region%3D%27World%27&_shape=array' # 发送GET请求 res = requests.get(url, headers={'user-agent': user_agent}) # 查看响应状态与数据 print(res.status_code) print(res.json())
补充说明:
- 你找到的是一个基于URL参数传递SQL查询的公开API,这类接口通常默认仅支持GET请求
- 若后续遇到其他API,需先通过浏览器抓包确认接口支持的请求方法(GET/POST/PUT等),再选择对应方式发起请求
内容的提问来源于stack exchange,提问作者zanga
相关产品推荐
相关产品推荐

