如何在Python Selenium WebDriver中提取li内容并排除span文本?
提取li元素中不含子元素的文本内容
针对你的需求,这里提供三种可行的方法来获取仅包含“List content”的文本:
方法一:使用XPath定位直接文本节点
直接通过XPath选中li元素下的第一个文本节点,而非整个li元素:
from selenium.webdriver.common.by import By # 定位li下的第一个直接文本节点 target_element = driver.find_element(By.XPATH, "//div[@id='div1']/ul/li/text()[1]") # 获取文本并去除多余空格换行 result = target_element.get_attribute('textContent').strip() print(result) # 输出:List content
说明:text()[1]会匹配li元素下的第一个直接文本节点,strip()用于清理文本前后的空白字符。
方法二:通过JavaScript脚本提取
利用JavaScript直接操作DOM,获取li元素的第一个子文本节点内容:
result = driver.execute_script(""" // 定位目标li元素 const liElement = document.querySelector('div#div1 ul.lists li.listItem1'); // 获取第一个子文本节点的内容并去除空白 return liElement.firstChild.textContent.trim(); """) print(result) # 输出:List content
方法三:提取完整文本后拆分处理
如果前两种方法受限,可以先获取li的完整文本,再移除span的文本内容:
from selenium.webdriver.common.by import By # 获取li的完整文本 li_full_text = driver.find_element(By.XPATH, "//div[@id='div1']/ul/li").text # 获取span的文本 span_text = driver.find_element(By.XPATH, "//div[@id='div1']/ul/li/span").text # 移除span文本并清理空白 result = li_full_text.replace(span_text, "").strip() print(result) # 输出:List content
内容的提问来源于stack exchange,提问作者Jaspreet Singh
相关产品推荐
相关产品推荐

