如何通过网络抓取Highcharts值?

时间:2020-03-07 21:15:18

标签: selenium-webdriver web-scraping highcharts

我正在尝试从Highchart获取数据,但是我只有一个“ None”值。

该图表需要访问密码,但是我对this page上的图表也有同样的疑问。

使用浏览器的DevTools,我可以使用以下方法从highchart获取y值:

Highcharts.charts[0].series[0].data[0].y

因此,将此代码与循环结构结合起来,我可以拥有所有y值。

问题是当我尝试使用Selenium来抓取这些值时。我正在使用下面的代码

page.execute_script('Highcharts.charts[0].series[0].data[0].y')

我期望的答案是2(就像在DevTools中一样),但是我得到的是“无”作为答案。

我已经尝试使用Beautifulsoup从<path>标记中检索y值,但是它不符合预期值。

HTML来源似乎很复杂(我不是这些领域的专家)。 <svg>的完整xpath为: /html/body/form/div[3]/div[2]/div[2]/section/div/div/div[2]/div/section/div/div/div/div[2]/div[2]/div[1]/div[2]/div/div/svg

此外,我找不到任何<iframe>,这可能避免了我访问图形。

有人知道我在做什么错吗? (我是该领域的初学者,所以请告知是否需要其他信息)

1 个答案:

答案 0 :(得分:2)

长时间停留后,我想出了解决该问题的方法。

我的错误是我正在通过硒将要执行的以下js脚本发送到浏览器。

page.execute_script('Highcharts.charts[0].series[0].data[0].y')

此代码运行正常,但没有任何价值。因此,为了具有y值(这是我需要的),我只需要在先前的代码中使用“返回”即可。最终的代码是

page.execute_script('return Highcharts.charts[0].series[0].data[0].y')