繁体   English   中英

如何从 python 中的 highcharts 图中抓取数据?

[英]How do I scrape data from a highcharts graph in python?

我正在尝试在 python 中为用于查找医学院统计数据的网站编写带有 selenium 的 web 刮板。 https://mec.aamc.org/msar-ui/#/medSchoolDetails/102提供了一个示例。 我已经能够成功地抓取大部分数据,但是一些数据,例如大学人口统计数据(您应该可以在没有订阅的情况下查看)在 highcharts 条形图中。 事实证明这非常困难,因为我之前只从 static 网站上抓取过数据。

我最初尝试通过 CSS 选择器查找悬停在每个条上的文本,但是每次我访问该站点时,选择器开头的几个字符都会改变,所以我不能那样做。 我尝试通过使用通配符代替这些字母的 CSS 选择器查找元素的搜索方法,但我发现的所有解释都太高级了,我无法理解。 我还尝试搜索如何从 highcharts 中抓取数据,但我再次无法理解我读到的内容。

你们可以提供的任何帮助(如果不可能,请提供解释)将不胜感激。 谢谢!

所以“最简单”的方法如下:

元素:

(//*[@class='highcharts-plot-background'])[1]

包含一个名为高度的属性。 这个高度是 310。这个元素高度似乎代表了 Y 轴 0-100。 所以 310 代表 100。

然后是酒吧。 这似乎有点复杂。 除了颜色之外,我找不到任何唯一标识符,它不是唯一的。

所以基本上,在 header Matriculant Demographics 下有一个带有 2 个蓝色图表的图表。

所以你正在寻找这样的东西:

(//*[@class='highcharts-plot-background'])[1]/..//*[@class='highcharts-point highcharts-color-0 ']

将有 2 个元素,所以先选择第一个,然后再选择第二个

这些是第一个中的 2 个蓝条。 因此,您需要确定哪个是第一个,哪个是第二个。 然后,您可以从每个获得属性高度。

然后,您可以通过将第二个高度除以第一个高度来轻松计算该值。 在此示例中,将 186 除以 310,总计 0.6 - 所以 60。

希望它有帮助:我是这样工作的:)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM