【问题标题】:Using Selenium and python to find text on webpage, then get the text directly below it使用 Selenium 和 python 在网页上查找文本,然后直接在其下方获取文本
【发布时间】:2021-04-14 18:58:45
【问题描述】:

如果这是一个糟糕的解释,我深表歉意,但我不知道如何更好地表达它。

从图片中您可以看到有一个名为 UPC 的文本,在它的正下方有一个数字。我想得到 UPC 正下方的号码。我想通过在网站上搜索文本“UPC”并在可能的情况下直接在其下方获取数字来找到它。

【问题讨论】:

    标签: python selenium selenium-webdriver web-scraping xpath


    【解决方案1】:

    如果您是此页面的所有者,最好使用唯一元素 id 来定位它们。无论如何,还有另一种解决方案。 正如selenium documentation 中所写,您可以使用css 选择器并仅使用“下一个元素”css-selector“~”。它可以是这样的:

    content = driver.find_element_by_css_selector('div:contains("UPC") ~ div')
    

    您可以阅读有关 CSS 选择器的更多信息here

    祝你好运!

    更新:正确答案是:

    driver.find_element(By.XPATH, '//div[text()="UPC"]/following-sibling::div')
    

    【讨论】:

    • 我收到此错误“selenium.common.exceptions.InvalidSelectorException:消息:无效选择器:指定了无效或非法选择器”
    • 好的,试试这个:driver.find_element(By.XPATH, '//div[text()="UPC"]/following-sibling::div')
    【解决方案2】:

    注意find_element_by_* 命令已弃用。请改用 find_element()


    要打印号码840....,您可以使用以下任一Locator Strategies

    • 使用 方法和xpath

      print(driver.find_element_by_xpath("//div[contains(., 'UPC')]//following-sibling::div[1]").text)
      
    • 使用 方法和xpath

      print(driver.find_element(By.XPATH, "//div[contains(., 'UPC')]//following-sibling::div[1]").text)
      

    理想情况下,您需要为visibility_of_element_located() 诱导WebDriverWait,您可以使用以下任一Locator Strategies

    • 使用 方法和xpath

      print(WebDriverWait(driver, 20).until(EC.visibility_of_element_located((By.XPATH, "//div[contains(., 'UPC')]//following-sibling::div[1]"))).text)
      
    • 使用 方法和xpath

      print(WebDriverWait(driver, 20).until(EC.visibility_of_element_located((By.XPATH, "//div[contains(., 'UPC')]//following-sibling::div[1]"))).text)
      

    您可以在How to retrieve the text of a WebElement using Selenium - Python找到相关讨论

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-01-26
      • 2016-10-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-07-01
      相关资源
      最近更新 更多