使用selenium python查找动态网站的web元素

2024-09-30 20:37:26 发布

您现在位置:Python中文网/ 问答频道 /正文

我想根据一些字段的web元素(xpath、类等)来刮取它们的文本

<div class = myOnlyElement> <div> ...... <div class = afafasf> ......</div> <div class = klklkl> ...... <div class = qwqwqwq> ...... <div class = reaction> text i need</div> </div> </div> </div> </div> <div class = myElement> <div> ...... <div class = dfdfdf> ......</div> <div class = ghgghghg> ...... <div class = erererere> ...... <div class = reaction> text i don't need</div> </div> </div> </div> </div>

假设我有这样的元素的后端。我发现这样的元素:

myelem = driver.find_element_by_classname('myOnlyElement')

现在我只想选择课堂上的“反应”和我需要的文本。 我的做法是:

myelem.find_element_by_classname('reaction')

如果这个类存在,它会捕获它,但在某些情况下,它会指向class = "reaction",其文本是“我不需要的文本”

希望我已经清楚地提到了我的问题。你能帮帮我吗


Tags: text文本divweb元素byelementfind
2条回答

我的朋友,这是最好的解决办法,当你看到这篇文章的时候,右键点击网页。在DOM检查器中单击鼠标右键,然后单击“复制->;复制完整的XPath值。然后您可能需要执行.text.source来获取这些值。但是试着到处玩

要打印文本我需要的文本,您可以使用以下任一Locator Strategies

  • 使用css_selectorget_attribute()

    print(driver.find_element_by_css_selector("div.myOnlyElement div.reaction").get_attribute("innerHTML"))
    
  • 使用xpath文本属性:

    print(driver.find_element_by_xpath("//div[@class='myOnlyElement']//div[@class='reaction']").text)
    

理想情况下,要打印文本我需要的文本,您必须为visibility_of_element_located()导出WebDriverWait,并且您可以使用以下任一Locator Strategies

  • 使用CSS_SELECTORget_attribute()

    print(WebDriverWait(driver, 20).until(EC.visibility_of_element_located((By.CSS_SELECTOR, "div.myOnlyElement div.reaction"))).get_attribute("innerHTML"))
    
  • 使用XPATH文本属性:

    print(WebDriverWait(driver, 20).until(EC.visibility_of_element_located((By.XPATH, "//div[@class='myOnlyElement']//div[@class='reaction']"))).text)
    
  • 注意:您必须添加以下导入:

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

You can find a relevant discussion in How to retrieve the text of a WebElement using Selenium - Python


奥特罗

链接到有用的文档:

相关问题 更多 >