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

li9yvcax  于 2022-11-11  发布在  Highcharts
关注(0)|答案(1)|浏览(290)

我正在用python编写一个用 selenium 元素的网页抓取器,用于查找医学院的统计数据。https://mec.aamc.org/msar-ui/#/medSchoolDetails/102提供了一个例子。我已经能够成功地抓取大部分数据,但有些数据,比如入学人口统计数据(你应该可以在没有订阅的情况下查看)是在highcharts条形图中。这被证明是非常困难的,因为我以前只从静态网站上抓取数据。
我最初尝试通过CSS选择器查找每个栏上的文本,但是每次访问站点时选择器开头的几个字符都会改变,所以我不能这样做。我尝试通过CSS选择器查找用通配符代替这些字母的元素,但我发现的每件事都有太高层次的解释,我无法理解。我还尝试搜索如何从highcharts中抓取数据,但我还是无法理解我读到的内容。
如果你们能给予任何帮助(如果不可能的话,请解释一下),我们将不胜感激。谢谢!

kqhtkvqz

kqhtkvqz1#

因此,“最简单”的方法似乎如下:
元素:

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

包含一个名为height的属性。此高度为310。此元素高度似乎代表Y轴0-100。因此310代表100。
然后是酒吧。这似乎有点复杂。我找不到任何唯一的标识符,除了颜色,这不是唯一的。
因此,基本上,在“注册人员人口统计”标题下,有一个带有2个蓝色图形的图表。
所以你要找的东西是这样的:

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

将有2个元素,因此首先选择第一个,然后选择第二个
这是第一个中的两个蓝色条。因此,您需要确定哪个是第一个,哪个是第二个。然后,您可以从每个条中获取属性高度。
然后你可以很容易地计算出这个值,用第二个高度除以第一个高度。在这个例子中,用186除以310,总共是0. 6-所以是60。
希望有帮助!我是这样工作的:)

相关问题