【问题标题】:How to web scraping Highcharts values?如何网页抓取 Highcharts 值?
【发布时间】:2020-06-20 06:19:04
【问题描述】:

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

图表需要密码才能访问,但我在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>,这可能会阻止我访问图表。

有谁知道我做错了什么? (我是这方面的初学者,所以如果需要任何进一步的信息,请告诉我)

【问题讨论】:

  • 用相关的HTML代码试验错误堆栈跟踪(如果有的话)更新问题
  • 我更新了一些信息。我没有任何错误,我只是无法获得正确的值。谢谢!!
  • 这能回答你的问题吗? Can I scrape the raw data from highcharts.js?
  • 嗨@fellipe sola,数据是异步加载的,所以也许你调用代码太早了?
  • 嗨@user4157124 ..不幸的是它不能解决我的问题。显然数据来自一个js脚本,因此,要使用这种方法,我需要创建一个事件来加载这个脚本(这是我的猜测)。

标签: selenium-webdriver web-scraping highcharts


【解决方案1】:

卡了很久,终于找到解决办法了。

我的错误是我通过 selenium 向我的浏览器发送了下面要执行的 js 脚本。

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

此代码运行良好,但没有返回给我任何价值。因此,为了获得 y 值(这正是我所需要的),我只需要在之前的代码中使用“return”即可。最终代码是

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

【讨论】:

    猜你喜欢
    • 2020-06-18
    • 2018-01-06
    • 2019-11-10
    • 2019-07-15
    • 2020-11-01
    • 1970-01-01
    • 1970-01-01
    • 2011-07-30
    相关资源
    最近更新 更多