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

如何用Python抓取Statista网站图表后的戴尔营收数据?

抓取Statista戴尔净营收图表数据的可行思路

我懂你那种用BeautifulSoup翻遍页面源码、找遍JSON文件却一无所获的挫败感——Statista的图表数据藏得确实有点深,毕竟很多是动态渲染或者封装在页面的脚本里的。给你几个亲测有效的方案,你可以试试:

方案1:用Selenium+JavaScript提取页面内的封装数据

Statista很多图表的原始数据其实存在页面的全局JavaScript变量里(比如window.__INITIAL_STATE__或者类似命名的对象),只是没直接暴露在HTML结构里。用Selenium可以模拟浏览器渲染页面,然后执行JS代码把这些数据捞出来:

  • 第一步:安装Selenium和对应浏览器的驱动(比如ChromeDriver)
  • 第二步:编写代码打开目标页面,等待图表完全加载(可以用WebDriverWait等待特定元素出现)
  • 第三步:先在浏览器控制台输入Object.keys(window),找带chart、data相关的变量;找到后用driver.execute_script("return window.yourTargetVariable")把数据取出来,再转成Python字典处理

举个简化的代码片段:

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

driver = webdriver.Chrome()
driver.get("https://www.statista.com/statistics/264911/dells-net-revenue-since-1996/")

# 等待图表容器加载完成
WebDriverWait(driver, 10).until(EC.presence_of_element_located((By.CLASS_NAME, "chart-container")))

# 执行JS提取数据(需先在控制台确认变量名再替换)
chart_data = driver.execute_script("return window.__INITIAL_STATE__.chartData")
print(chart_data)

driver.quit()

方案2:仔细排查网络请求里的API数据

你之前找JSON没找到可能是没筛选对请求类型。试试这个步骤:

  • 打开目标页面,按F12打开开发者工具,切换到「Network」标签
  • 刷新页面,在筛选框输入data或者revenue,重点看XHR或Fetch类型的请求
  • 逐个查看请求的响应内容,大概率能找到包含年份、营收数值的JSON数据(比如有些请求会返回dataPoints之类的数组)
  • 找到对应的API接口后,直接用Python的requests库发送请求获取数据就行(注意要带上必要的请求头,比如User-Agent、Cookie等,避免被拦截)

方案3:考虑Statista官方API(有门槛)

如果上面的方法都不行,Statista其实有官方API可以获取结构化数据,但这个需要注册账号,部分数据可能需要付费订阅。如果只是偶尔抓取少量数据,前面两个方案足够,但如果有长期需求,可以去看看他们的API文档。

⚠️ 注意:抓取前一定要看Statista的使用条款,不要批量高频请求,避免被封IP或者触发反爬机制。

内容的提问来源于stack exchange,提问作者Sibren De Preter

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 06:38:12