如何抓取图表数据?手办价格预测机器学习项目数据采集求助
手办价格预测机器学习项目实操建议
一、单个商品价格历史数据采集(针对你提供的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
相关产品推荐
相关产品推荐

