从交互式图表中抓取数据

Scraping data from an interactive chart

我正在尝试检索在本页 javascript 中生成图表的数据:

https://www.energy-charts.de/price.htm

我找到了用 ML 元素画线的 SVG 元素,但我不知道从哪里开始寻找 javascript 数组实际数据。 (我假设某处一定有一个数组)。

对于我需要开始寻找这些数据的任何提示和提示,我深表感谢。

简答

数据存储在 JSON 文件中 https://www.energy-charts.de/price/week_2019_21.json


长答案

如果您打开开发人员工具 (F12),您可以从文件 price.js 中看到 console.log 的负载。其中大部分都没有用,但是 got chartTitle from JSON! _chartTitle: Electricity production and spot prices in Germany in week 21 2019 这行看起来对我们有用。

打开 price.js 并搜索 "got chartTitle",我找到了一个名为 createChart 的函数,它似乎正在加载 JSON 个文件。我假设这些将从某种 API 返回,而不是直接存储在 JS 文件中。

从 "got chartTitle" 向上滚动,我注意到这一行: d3.json(filepath, function(error, json) {。对我来说,这是从文件路径加载 JSON。搜索 "filepath",我发现它被声明为一个全局变量。在 javascript 控制台中输入这个,我看到值是“./price/week_2019_21.json”,所以导航到那个 URL (https://www.energy-charts.de/price/week_2019_21.json) 应该是您正在寻找的数据!

这个URL是在下面的代码块中计算的:

if(defaultweek < 10){
  filepath = "./price/week_" + defaultyear +"_0"+ defaultweek +".json"; //default file on first-load
}
else{
  filepath = "./price/week_" + defaultyear +"_"+ defaultweek +".json"; //default file on first-load
}

默认值设置在energy-charts_default.js

希望对您有所帮助!