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

如何抓取图表数据?手办价格预测机器学习项目数据采集求助

手办价格预测机器学习项目实操建议

一、单个商品价格历史数据采集(针对你提供的Ironhide页面)

页面的价格历史是通过图表渲染的,直接爬取DOM节点拿不到原始数据,试试这几个方案:

  • 抓接口:打开浏览器F12开发者工具,切换到Network标签,刷新页面后筛选XHR/Fetch请求,找返回价格数据的接口(比如可能带price-history或商品ID的请求),这类接口通常返回JSON/CSV格式的时间-价格对,直接提取即可。
  • 扒JS变量:很多图表(比如Highcharts)会把数据硬编码在页面的<script>标签里,搜索类似priceData或series的关键词,找到形如[[时间戳, 价格], ...]的数组,用正则提取。
  • 模拟渲染:如果前两种方法不行,用Selenium/Puppeteer模拟浏览器加载页面,直接从图表实例取数据。Python示例代码:
from selenium import webdriver
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC

driver = webdriver.Chrome()
target_url = "https://www.actionfigure411.com/transformers/war-for-cybertron-siege-series/deluxe-class/ironhide-3664.php"
driver.get(target_url)

# 等待图表加载完成
WebDriverWait(driver, 15).until(EC.presence_of_element_located(("css selector", ".highcharts-container")))
# 执行JS提取Highcharts数据
price_history = driver.execute_script("return Highcharts.charts[0].series[0].data.map(point => [new Date(point.x).toLocaleDateString(), point.y])")
print(price_history)

driver.quit()

二、批量采集方法

  • 先梳理网站URL规律:目标页面的URL是/transformers/系列名/分类名/商品-id.php,先爬取所有系列的分类列表页,用BeautifulSoup解析页面中的商品链接,把所有目标商品的URL收集起来。
  • 异步请求提速:用aiohttp做异步HTTP请求,或者requests+多进程,同时添加随机User-Agent、设置1-2秒的请求间隔,避免触发网站反爬。
  • 复用接口:如果找到了单个商品的价格历史接口,直接批量传入商品ID调用接口,比逐个渲染页面效率高10倍以上。

三、数据处理与特征工程

目标变量

  • 核心目标变量选未来N天的手办平均售价(比如未来30天),如果做短期预测,也可以选下一周的价格波动幅度。

关键特征

  • 商品属性:所属系列、产品分类(Deluxe Class这类)、官方指导价、发售日期、是否为限定款、IP角色的热度(可以用搜索指数或社交媒体讨论量替代)。
  • 时间特征:距发售日的天数、季节(比如圣诞/黑五前后价格波动大)、月份、是否为节假日。
  • 历史价格特征:近7/30/90天的平均价格、价格波动率、历史最低价/最高价、价格趋势(上涨/下跌/平稳)。
  • 市场特征:二手平台的供应量、同系列竞品的价格走势。

预处理要点

  • 缺失值:价格数据缺失的话,用时间序列插值法填充;数据量少于30个时间点的商品直接剔除。
  • 标准化:把价格、时间跨度这类数值特征做Z-score标准化,避免模型被大数值特征主导。
  • 时序数据集构建:做时序预测时,用滑动窗口法,比如用过去90天的所有特征,预测未来30天的价格。

内容的提问来源于stack exchange,提问作者D.dream

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.29 10:05:25