如何在Python Selenium中定位b标签指定文本后的后续元素
解决方法
针对你需要提取<b>Att:</b>和<b>Ref:</b>之后文本的需求,有几种灵活的实现方式,无需依赖固定XPath:
方法1:使用XPath的following-sibling定位文本节点
直接通过XPath定位目标<b>标签后,获取其后续的文本节点内容,再清理多余空格:
# 获取Att:后的文本 att_text = driver.find_element("xpath", ".//b[contains(text(), 'Att:')]/following-sibling::text()[1]").get_attribute("textContent").strip() # 获取Ref:后的文本 ref_text = driver.find_element("xpath", ".//b[contains(text(), 'Ref:')]/following-sibling::text()[1]").get_attribute("textContent").strip() print(att_text) # 输出11,847这类目标值
following-sibling::text()[1]用于精准定位<b>标签后的第一个文本节点,strip()负责去除前后的空格和换行符。
方法2:获取父元素文本后分割提取
找到包含<b>标签的父容器(比如<td>),获取整个容器的文本后,按标识文本分割提取:
# 处理Att的情况 att_parent = driver.find_element("xpath", ".//b[contains(text(), 'Att:')]/parent::*") full_att_text = att_parent.text att_value = full_att_text.split("Att:")[1].strip() # 处理Ref的情况 ref_parent = driver.find_element("xpath", ".//b[contains(text(), 'Ref:')]/parent::*") full_ref_text = ref_parent.text ref_value = full_ref_text.split("Ref:")[1].strip()
这种方法适用于父元素内仅包含<b>标签和目标文本的场景,分割后取后半部分再清理空格即可。
方法3:通过JavaScript脚本提取文本节点
如果前两种方法遇到限制,可以用JS直接获取<b>标签的下一个文本节点:
# 获取Att后的文本 att_script = """ var bTag = document.querySelector("b:contains('Att:')"); return bTag.nextSibling.textContent.trim(); """ att_text = driver.execute_script(att_script) # 获取Ref后的文本 ref_script = """ var bTag = document.querySelector("b:contains('Ref:')"); return bTag.nextSibling.textContent.trim(); """ ref_text = driver.execute_script(ref_script)
注意:如果页面存在多个匹配的<b>标签,需要调整querySelector的定位逻辑,比如结合父元素缩小范围。
内容的提问来源于stack exchange,提问作者pippo_T
相关产品推荐
相关产品推荐

