如何指向一个不包含任何HTML标签的元素?

13 浏览
0 Comments

如何指向一个不包含任何HTML标签的元素?

我有以下的HTML代码:



    "text1"
    "text2"   <=== 我试图提取这个文本


是否可以编写一个xpath,指向text2所在的节点?如果可以,那么我可以通过.text (python)来提取。

0
0 Comments

问题的出现原因是在HTML中,某个元素没有包含任何HTML标签,因此无法直接通过标签名或类名等方式指向该元素。

解决方法之一是根据所使用的HTML解析器的不同,可以利用其提供的内部HTML或内部文本节点获取模块。通过使用该模块,可以获取到包含文本2的内容。如果只想要文本2,可以使用正则表达式或其他方法来过滤出文本。

另一种解决方法是,如果HTML也是由自己编写的,那么可以在文本2的周围添加标签,然后直接获取该标签内的内容。

以下是示例代码:


文本1 文本2 文本3
const element = document.querySelector('span'); const text2 = element.innerText; console.log(text2); // 输出:文本2

通过上述方法,可以解决如何指向不包含任何HTML标签的元素的问题。

0
0 Comments

问题的原因是在尝试通过XPath指向一个不包含任何HTML标签的元素时,添加"/text()"方法会导致错误。因为Selenium只允许获取HTML元素,而不允许获取纯文本。

解决方法是使用另一种方法来提取所需的文本。可以先使用XPath提取完整的文本,然后使用.split('\n')[-1]来获取所需的文本。

下面是一个示例代码:

# 导入所需的库
from selenium import webdriver
from selenium.webdriver.common.by import By
# 创建一个浏览器实例
driver = webdriver.Chrome()
# 打开网页
driver.get("http://example.com")
# 使用XPath提取完整的文本
element = driver.find_element(By.XPATH, "//div[.='xyz']/text()")
# 使用.split('\n')[-1]获取所需的文本
required_text = element.text.split('\n')[-1]
# 输出所需的文本
print(required_text)
# 关闭浏览器
driver.quit()

以上就是解决该问题的方法。通过使用.split('\n')[-1]来获取所需的文本,避免了在XPath中添加"/text()"导致的错误。

0