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

如何使用BeautifulSoup提取Plotly折线图中红色线条的x、y坐标数值

解决步骤

  • 修正请求方法:_dash-update-component 是Dash应用的回调专属端点,仅接受POST请求,你之前使用GET请求无法获取回调返回的图表数据。
  • 提取请求Payload:打开浏览器控制台的「网络」标签,筛选XHR请求,找到对应_dash-update-component的请求,复制其请求体(Payload)的JSON结构,作为POST请求的参数传入。
  • 解析返回数据:请求成功后返回的JSON中,response['props']['figure']['data']数组存储了所有折线的配置,找到红色折线对应的元素,提取其中的x、y字段即可。

完整示例代码

import pandas as pd
import requests

header = {
  "User-Agent": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/50.0.2661.75 Safari/537.36",
  "Content-Type": "application/json"
}

link = 'https://dash.gallery/python-docs-dash-snippets/_dash-update-component'
# 此处替换为你从浏览器控制台复制的实际请求Payload
payload = {
    "output": "图组件的output标识",
    "inputs": [{"id": "对应触发组件id", "property": "value", "value": "对应触发值"}],
    "changedPropIds": ["触发属性id"]
}

r = requests.post(link, headers=header, json=payload, timeout=10)
# 提取红色折线数据,索引根据实际data数组的顺序调整,红色线一般对应第1个或第2个元素
red_line_data = r.json()['response']['props']['figure']['data'][1]
# 若不确定对应索引,可遍历data数组判断line.color字段是否为红色色值
# for idx, line in enumerate(r.json()['response']['props']['figure']['data']):
#     if line['line']['color'] == '#FF0000': # 替换为实际红色对应的色值
#         red_line_data = line
#         break

# 转成DataFrame
df = pd.DataFrame({
    'x坐标': red_line_data['x'],
    'y坐标': red_line_data['y']
})
print(df)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 09:27:03