如何提取外层span标签中内部span之前的独立文本?
如何仅提取父span元素内子span之前的文本
现有如下HTML结构:
<span class="ui-cfs-sn-l" xpath="1"> ABC <span class="ui-cfs-txt">°⌃</span> </span>
使用以下Selenium代码提取文本时:
element = driver.find_element(by=By.XPATH, value="//span[@class='ui-cfs-sn-l']") result = element.text
返回结果为ABC°⌃,但需求是仅获取子span之前的文本,得到ABC。
以下是几种可行的解决方法:
方法一:通过XPath定位目标文本节点
直接用XPath选中父元素下的第一个文本节点,再清理多余空白:text_node = driver.find_element(by=By.XPATH, value="//span[@class='ui-cfs-sn-l']/text()[1]") result = text_node.text.strip()方法二:执行JavaScript脚本提取
利用JS操作DOM,直接获取父元素的第一个子文本节点内容:parent_element = driver.find_element(by=By.XPATH, value="//span[@class='ui-cfs-sn-l']") result = driver.execute_script("return arguments[0].childNodes[0].textContent.trim();", parent_element)方法三:拆分完整文本
若前两种方法受限,可先获取完整文本,再移除子span的内容:parent_element = driver.find_element(by=By.XPATH, value="//span[@class='ui-cfs-sn-l']") full_text = parent_element.text sub_text = driver.find_element(by=By.XPATH, value="//span[@class='ui-cfs-txt']").text result = full_text.replace(sub_text, "").strip()
内容的提问来源于stack exchange,提问作者Jason
相关产品推荐
相关产品推荐

