如何解决Python Selenium-在元素循环中查找元素
我想寻求帮助。我在网站https://www.kununu.com/de/volkswagen/kommentare/100上尝试了所有文章的标题下的总体评级,但是当我这样做时,它将打印:
4,8
4,8
但是有更多的评级,而不仅仅是4,8。所以我想在元素循环中找到元素。如果可能,我想在这种类型的循环中进行操作。 这是我的代码:
art = driver.find_elements_by_xpath("//article[@class='index__contentBlock__7vKo-']")
for i in art:
pr = i.find_element_by_xpath("//span[@class='index__score__16yy9']").text
print(pr)
解决方法
您已经收集了艺术中的所有元素。
您所要做的就是:
art = driver.find_elements_by_xpath("//article[@class='index__contentBlock__7vKo-']")
for i in art:
print(i.text)
让我知道是否可行。
,这应该打印所有带有index_score的文章。
art = driver.find_elements_by_xpath("//article[@class='index__contentBlock__7vKo-']//span[@class='index__score__16yy9']")
for i in art:
print(i.text)
,
提取评分,例如 2,0 使用Selenium和python,您必须为visibility_of_all_elements_located()
引出WebDriverWait,并且可以使用以下任何Locator Strategies :
-
使用
CSS_SELECTOR
和get_attribute("innerHTML")
:driver.get('https://www.kununu.com/de/volkswagen/kommentare/100') print([my_elem.get_attribute("innerHTML") for my_elem in WebDriverWait(driver,20).until(EC.visibility_of_all_elements_located((By.CSS_SELECTOR,"div[class^='index__ratingBlock'] span[class^='index__score__']")))])
-
使用
XPATH
和 text 属性:driver.get('https://www.kununu.com/de/volkswagen/kommentare/100') print([my_elem.text for my_elem in WebDriverWait(driver,20).until(EC.visibility_of_all_elements_located((By.XPATH,"//div[starts-with(@class,'index__ratingBlock')]//span[starts-with(@class,'index__score__')]")))])
-
控制台输出:
['2,0','4,5','3,8','2,7',2',9',2']
-
注意:您必须添加以下导入:
from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.common.by import By from selenium.webdriver.support import expected_conditions as EC
Outro
链接到有用的文档:
-
get_attribute()
方法Gets the given attribute or property of the element.
-
text
属性返回The text of the element.
- Difference between text and innerHTML using Selenium
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。