如何使用 Selenium 和 Python 从文本节点中检索部分文本

Posted

技术标签:

【中文标题】如何使用 Selenium 和 Python 从文本节点中检索部分文本【英文标题】:How to retrieve partial text from a text node using Selenium and Python 【发布时间】:2020-10-08 06:24:03 【问题描述】:

我只想获取“文本...”而不使用 .split() 或索引切片

html

<a class="call_recipe" href="/recipes/2913">
      " text ... "
      <strong> something~ </strong>
    </a>

HTML 快照:

【问题讨论】:

【参考方案1】:
driver.find_element_by_class_name("call_recipe").text

我想这就是你所追求的。

How to get text with selenium web driver in python

【讨论】:

【参考方案2】:

你可以使用

 "find_element_by_class_name("some_text").getText()"

或者为了更好地匹配你可以使用的文本

"driver.find_element_by_xpath("..").text"

希望对你有帮助

【讨论】:

【参考方案3】:

要打印 text ...,您必须为 visibility_of_element_located() 诱导 WebDriverWait,您可以使用以下任一 Locator Strategies:

使用CSS_SELECTORchildNodesstrip()

print(driver.execute_script('return arguments[0].firstChild.textContent;', WebDriverWait(driver, 20).until(EC.visibility_of_element_located((By.CSS_SELECTOR, "a.call_recipe[href^='/recipes']")))).strip())

使用XPATHget_attribute()splitlines()

print(WebDriverWait(driver, 20).until(EC.visibility_of_element_located((By.XPATH, "//a[@class='call_recipe' and starts-with(@href, '/recipes')]"))).get_attribute("innerHTML").splitlines()[1])

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

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

参考

您可以在以下位置找到一些相关的详细讨论:

How to get specific text that belongs to div class How to get text from textnodes seperated by whitespace using Selenium and Python

【讨论】:

以上是关于如何使用 Selenium 和 Python 从文本节点中检索部分文本的主要内容,如果未能解决你的问题,请参考以下文章

HTML5如何从文本区域中获取选定的文本

在将数据输出回文本区域时,如何正确清理从文本区域接收的数据?

使用 Selenium 和 Python,如何检查按钮是不是仍然可点击?

如何使用 python 和 Selenium 将 cookie 保存在浏览器中

如何使用Selenium和Python下载图像

如何使用 Python 和 Selenium 进行分页抓取页面