如何web scrape Worldometer图表获取新冠7日移动平均病例及死亡数据
可行实现方案
方案一:直接提取页面内置图表数据(推荐,无需模拟交互)
你要的7日移动平均值根本不需要模拟点击、悬停操作,Worldometers的页面用Highcharts渲染图表,所有数据都直接硬编码在页面的JS配置里,直接提取就行:
- 用
requests(Python)或其他HTTP请求库请求目标页面,拿到完整HTML源码 - 用正则表达式匹配对应图表的序列数据即可:
- 新增确诊7日移动平均对应「Daily New Cases」图表的第二个序列
- 新增死亡7日移动平均对应「Daily Deaths」图表的第二个序列
- 提取到的数据已经包含完整的日期和对应平均值,直接解析成结构化数据就能用
示例Python核心代码:
import requests import re import json # 此处填入你提供的目标页面地址 url = "目标页面地址" headers = {"User-Agent": "替换为你自己的请求标识"} resp = requests.get(url, headers=headers) html = resp.text # 匹配新增确诊7日平均数据块 cases_avg_pattern = re.compile(r'Daily New Cases.*?series:\s*\[(.*?)\]', re.S) cases_series = cases_avg_pattern.search(html).group(1) # 提取第二个序列即为7日平均数据,解析JSON后即可得到全量日期和对应数值
方案二:模拟用户交互获取
如果需要完全复现手动操作的流程,也可以用浏览器自动化工具实现:
- 选用
Playwright或Selenium工具启动浏览器实例,访问目标页面 - 定位到对应图表的「7-day moving average」按钮,执行点击操作
- 不需要模拟悬停读Tooltip,直接在浏览器控制台执行JS代码读取
Highcharts.charts对象中的序列数据,精度远高于解析Tooltip文本
注意事项
- 抓取时控制请求频率,避免对站点服务器造成压力
- 建议请求头中携带明确的User-Agent标识,避免被站点拦截
内容的提问来源于stack exchange,提问作者Luis Vera
相关产品推荐
相关产品推荐

