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

如何用Python抓取网页中的图表数据?以指定网站为例

抓取动态图表数据的Python实现方案

你的代码无法找到图表内容,核心原因是该网站的图表是通过JavaScript动态渲染生成的——requests只能获取页面的静态HTML源码,而图表数据是页面加载后通过JS异步加载并渲染的,静态源码里根本没有这些数据。

可以用Python实现抓取,下面提供两种可行方案:

方案一:用Selenium模拟浏览器渲染页面

Selenium可以模拟真实浏览器加载页面,等待JS执行完成后再获取渲染后的内容,适合直接提取页面上的图表数据元素。

步骤:

  1. 安装依赖:
pip install selenium
  1. 下载对应浏览器的驱动(比如ChromeDriver,需和浏览器版本匹配),并配置到环境变量或指定路径。

示例代码:

from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC

url = 'http://www.mahallemistanbul.com/MahallemSEGE_/'

# 初始化Chrome浏览器驱动(需确保ChromeDriver路径正确)
driver = webdriver.Chrome()
driver.get(url)

# 等待图表相关元素加载完成(根据实际元素调整等待条件)
try:
    # 替换为页面中实际的图表容器选择器(比如ID、类名)
    chart_container = WebDriverWait(driver, 10).until(
        EC.presence_of_element_located((By.CLASS_NAME, "chart-container"))
    )
    # 若图表是SVG格式,可直接提取文本数据;若为Canvas,需从JS变量或接口获取数据
    svg_content = chart_container.find_element(By.TAG_NAME, "svg")
    print(svg_content.text)
finally:
    driver.quit()

方案二:直接抓取图表的数据源接口

很多动态图表的数据是通过AJAX请求从后端接口获取的,直接请求这个接口获取原始数据(通常是JSON格式),效率比模拟浏览器更高。

步骤:

  1. 打开浏览器开发者工具(按F12),切换到「Network」标签页。
  2. 刷新目标页面,在「XHR」或「Fetch」分类下查找包含图表数据的请求(URL通常含data、chart等关键词)。
  3. 复制该请求的URL、请求头和参数,用requests直接发送请求获取数据。

示例代码:

import requests

# 替换为你找到的实际数据源接口URL
data_api_url = "http://www.mahallemistanbul.com/MahallemSEGE_/api/chart-data"
headers = {
    # 复制浏览器请求头中的必要字段,比如User-Agent
    "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36"
}

response = requests.get(data_api_url, headers=headers)
if response.status_code == 200:
    chart_data = response.json()
    print(chart_data)
else:
    print(f"请求失败,状态码:{response.status_code}")

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 07:45:25