除了您提到的文字实际上并非如此之外,您走在正确的道路上text
. These texts
实际上是由一个渲染的CSS
属性称为content
只能与伪元素一起使用:before
and :after
。你可以阅读here如果您有兴趣的话,可以了解它是如何工作的。
文本呈现为图标;有时组织这样做是为了避免合理的价值观被忽视scraped。然而,有一种方法(有点困难)可以解决这个问题。使用Selenium
and javascript
您可以单独定位CSS
财产的价值content
其中它保存着您所追求的值。
研究了一个小时这是最简单的pythonic
获得您想要的值的方法
overall_score = driver.execute_script("return [...document.querySelectorAll('.q-score-bar__grade-label')].map(div => window.getComputedStyle(div,':before').content)") #key line in the problem
代码简单地创建了一个javascript
目标代码classes
的元素,然后映射div
元素的值CSS
特性。
这会返回一个列表
['"TOP BUY"', '"B"', '"B"', '"B"', '"A"']
值,按以下顺序对应
Q-Factor Score/Quality/Momentum/Growth/Technicals
要访问列表的值,您可以使用for
循环和indexing
选择值。你可以看到更多相关内容here