我试图在python中为一个用来查找医学院统计数据的网站编写一个带有selenium的web刮刀。https://mec.aamc.org/msar-ui/#/medSchoolDetails/102提供了一个示例。我已经成功地抓取了大部分的数据,但是一些数据,比如“录取人口统计”(您应该可以在没有订阅的情况下查看的),是在高图表条形图中。事实证明,这是非常困难的,因为我以前只从静态网站上刮过数据。
我最初尝试通过CSS选择器查找每个栏上的文本,但每次访问站点时,选择器开头的几个字符都会更改,所以我不能这样做。我试着通过CSS选择器寻找一个元素,用通配符代替那些字母,但是我发现的每一件事的解释都太高了,我无法理解。我还试着搜索如何从一般的高级图表中抓取数据,但我还是不明白我读到了什么。
任何帮助,你们可以提供(或解释,如果这是不可能的),将非常感谢。谢谢!
发布于 2022-01-03 19:34:05
因此,“最简单”的方法如下:
要素:
(//*[@class='highcharts-plot-background'])[1]包含名为“高度”的属性。这个高度是310。这个元素的高度似乎代表Y轴0-100.所以310代表100。
然后是酒吧。这似乎有点复杂。除了颜色之外,我找不到任何唯一的标识符,颜色不是唯一的。
基本上,在标题记录下有一个有两个蓝色图表的图表。
所以你在寻找这样的东西:
(//*[@class='highcharts-plot-background'])[1]/..//*[@class='highcharts-point highcharts-color-0 ']将有两个元素,所以先选择第一个,然后选择第二个
这是两个蓝色的酒吧在第一个。因此,您需要确定哪个是第一个,哪个是第二个。然后,您可以从每个属性中获得属性高度。
然后,通过将第二个高度除以第一个高度,就可以很容易地计算出这个值。在这个例子中,186除以310,总计0.6 - so 60。
希望能帮上忙!我让它这样运作:)
https://stackoverflow.com/questions/70569247
复制相似问题