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

如何使用Python提取网站中通过API加载的图表数据 解决405报错

错误原因

405状态码表示你使用了接口不支持的HTTP请求方法,你当前代码用了POST请求,但/charts/data/947接口仅支持GET请求。

API调用规则查询方法

要获取网站未公开的API调用规则,直接用浏览器自带的开发者工具抓包即可:

  • 打开目标网页,按F12调出开发者工具,切换到「网络」面板
  • 筛选器选择「Fetch/XHR」,刷新页面,就能看到页面加载过程中所有的异步请求
  • 逐个查看请求的响应内容,找到返回图表数据的那条请求,就能完整获取它的请求方法、请求头、请求参数、响应格式信息

可运行的Python实现

import requests
import pandas as pd
import json

# 注意:以下Header里的Authorization、Cookie是临时凭证会过期,你需要替换成自己浏览器当前的对应值
headers = {
    "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/124.0.0.0 Safari/537.36",
    "Accept": "application/json, text/javascript, */*; q=0.01",
    "Authorization": "Bearer 替换为你自己的当前Bearer值",
    "Cookie": "替换为你自己的当前Cookie值",
    "Referer": "https://en.macromicro.me/charts/947/commodity-ccfi-scfi"
}

url = "https://en.macromicro.me/charts/data/947"

# 将原代码的POST请求改为GET请求
response = requests.get(url, headers=headers)

# 直接解析JSON响应,不需要调用BeautifulSoup
if response.status_code == 200:
    data = response.json()
    # 打印完整数据结构,可根据自身需求提取对应字段
    print(json.dumps(data, indent=2, ensure_ascii=False))
    # 如需转成DataFrame可根据实际数据结构调整,示例如下:
    # df = pd.DataFrame(data['data'])
    # print(df)
else:
    print(f"请求失败,状态码:{response.status_code},错误信息:{response.text}")

注意事项

  • Header里的Authorization和Cookie是用户身份凭证,有固定过期时间,每次运行前建议从浏览器开发者工具里重新复制最新值
  • 控制请求频率,不要短时间内多次请求,避免触发网站反爬机制被限制访问
  • 该网站数据有版权,提取的数据仅限个人学习使用,不要用于商业用途或者公开传播

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.14 20:15:03