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

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

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

我最初尝试通过 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.

希望对您有所帮助!我是这样工作的:)