当前位置: 首页 > 知识库问答 >
问题:

如何使用Selenium和Python从多个div类中提取文本

陶璞
2023-03-14

我想从Page_inspect得到课文课的价格。

使用driver.find_element_by_xpath和 Web 驱动程序等待。

rateText=WebDriverWait(driver, 10).until(EC.presence_of_all_elements_located((By.XPATH, '//div[starts-with(@class,"price")]//div[contains(@class,"price-value")]')))
for ratevalue in rateText:
      print (ratevalue.text)

结果未找到 :

回溯(最后一次调用):文件“D:\project\totempop\webscraping\asrPOP.py”,第22行,rateText=WebDriverWait(driver,10)。直到(EC.presence_of_all_elements_located((By.XPATH),//div[以(@class,“price”)]//div[包含(@class“price-value”))文件“C:\Python310\lib\site packages\selenium\webdriver\support\wait.py”第89行,在直到引发TimeoutException(消息、屏幕、堆栈跟踪)selenium.common.Exception中。TimeoutException:消息:

提前感谢

共有3个答案

闾丘山
2023-03-14

看起来你已经很接近了,但是你需要做一些小的调整,如下所示:

> < li>

<代码>

<代码>

理想情况下,要获取文本,您需要诱导WebDriveretcvisibility_of_element_located(),您可以使用以下任一定位器策略:

>

  • 使用CSS_SELECTOR和文本属性:

    print(WebDriverWait(driver, 20).until(EC.visibility_of_element_located((By.CSS_SELECTOR, "div.price div.price-line > strong.price-value"))).text)
    

    使用XPATH和get_attribute(“innerHTML”)

    print(WebDriverWait(driver, 20).until(EC.visibility_of_element_located((By.XPATH, "//div[@class='price']//div[@class='price-line']/strong[@class='price-value']"))).get_attribute("innerHTML"))
    

    注意:您必须添加以下导入:

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

  • 高泳
    2023-03-14

    你可以使用这个:

    WebDriverWait(driver, 10).until(EC.presence_of_all_elements_located((By.CLASS_NAME, "price-value")))
    elements = driver.find_elements(By.CLASS_NAME, "price-value")
    for element in elements:
        print(element.text)
    
    钱元徽
    2023-03-14

    可能是XPath有问题。您应该试试这个:'.//div[包含(@class,"price-value")]/text()'

     类似资料:
    • 我正在尝试使用Python中的BeautifulSoup包提取存在于div标记中的文本。 示例我想提取标记 内部的文本 以及 中的文本 当我运行代码时,系统崩溃并显示以下错误: ----------------------------------------------------------------------------------------------------在60###artic

    • HTML div类,其中包含我希望打印的数据 这是我目前的代码: 我打印出来的都是 硒。网络驱动程序。遥远的webelement。WebElement(session=“9aa956e2bd51f510dd626f6937b01c0e”,element=“0.6506218589958-1”) 我对selenium的帮助并不陌生

    • 当我执行时,它也打印和,我如何在Python中使用selenium只获取示例文本?

    • 我有一个div元素,如下所示。 我用下面的XPath标识这个元素。 Selenium标识此元素并加载WebElement对象。但当我去获取它的文本时,我得到的只是一个“。”如下所示,而不是获取“采购到付款流程”。我在这里做错了什么?我检查了chrome控制台,没有其他元素与此XPath匹配。 任何帮助都将不胜感激。

    • 我正在尝试创建一个机器人,在各种TikTok帖子上留下评论,其中一些帖子需要留下一个提及,例如用户名。问题是,TikTok的注释框是一个div元素,而不是一个input元素。 首先,我知道这个StackOverflow帖子,对一些人来说,它只是说使用javascript更新div值。问题是,如果编辑代码,它将不会显示用户名下拉菜单 “用户名下拉菜单”是什么? 这是一个小菜单,上面有你想要提及的用户

    • 问题内容: 我正在使用Selenium为网页编写JUnit测试,并且试图验证页面中是否存在预期的文本。我正在测试的网页代码如下所示: 我想将预期的内容与页面上的内容进行比较,因此我想使用Assert.assertTrue()。我知道要从div获得一切,我可以 但这将返回“必填信息*收件人:” 有没有办法使用cssSelector从div(“收件人”)获取文本,而没有其他标签? 问题答案: 您不能使