【问题标题】:Python selenium - Find element in elements loopPython selenium - 在元素循环中查找元素
【发布时间】:2020-08-27 22:01:57
【问题描述】:

我想寻求帮助。我在网站https://www.kununu.com/de/volkswagen/kommentare/100 上尝试在所有文章的主标题下抓取总体评分,但是当我这样做时,它会打印:

4,8
4,8
4,8
4,8
4,8
4,8
4,8
4,8
4,8
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)

【问题讨论】:

  • 出于文档目的,请接受对您最有帮助的答案或就您的期望提供反馈。

标签: python selenium xpath css-selectors webdriverwait


【解决方案1】:

你已经收集了艺术中的所有元素。

你所要做的就是:

art = driver.find_elements_by_xpath("//article[@class='index__contentBlock__7vKo-']")
for i in art:
    print(i.text)

让我知道这是否有效。

【讨论】:

  • 但我只想打印 i.find_element_by_xpath("//span[@class='index__score__16yy9']").text 不是整个文本
【解决方案2】:

这应该打印所有带有 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)

【讨论】:

    【解决方案3】:

    提取评级,例如2,0 使用Selenium 你必须为visibility_of_all_elements_located() 诱导WebDriverWait 并且你可以使用以下Locator Strategies 之一:

    • 使用CSS_SELECTORget_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__']")))])
      
    • 使用XPATHtext属性:

      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', '4,8', '2,8', '4,7', '3,2', '4,0', '4,9', '4,2']
      
    • 注意:您必须添加以下导入:

      from selenium.webdriver.support.ui import WebDriverWait
      from selenium.webdriver.common.by import By
      from selenium.webdriver.support import expected_conditions as EC
      

    结尾

    链接到有用的文档:

    【讨论】:

      猜你喜欢
      • 2016-07-26
      • 2023-04-10
      • 1970-01-01
      • 2017-12-03
      • 1970-01-01
      • 2011-01-31
      • 2012-12-12
      • 1970-01-01
      相关资源
      最近更新 更多