如何用Selenium提取未被标签包裹的Docket No.对应数字
解决方法
以下几种方法可直接提取目标数字"3228",无需后续处理多余标签内容:
方法1:通过JavaScript执行XPath获取文本节点
Selenium的find_element要求返回元素节点,无法直接定位文本节点,但可以通过execute_script执行JS逻辑获取目标文本:
# Python示例 docket_no = driver.execute_script('return document.evaluate("//*[@data-title=\'Docket No.\']/text()[1]", document, null, XPathResult.STRING_TYPE, null).stringValue.trim();')
方法2:定位元素后提取首个文本子节点
先定位到目标<td>元素,再获取它的第一个文本子节点内容:
# Python示例 from selenium.webdriver.common.by import By td_element = driver.find_element(By.XPATH, '//*[@data-title="Docket No."]') docket_no = td_element.get_attribute('firstChild').strip()
若部分Selenium版本不支持直接调用firstChild,可改用JS执行:
docket_no = driver.execute_script('return arguments[0].firstChild.nodeValue.trim();', td_element)
方法3:利用textContent直接提取
由于子<div>节点无文本内容,直接获取元素的textContent并去除空格即可:
# Python示例 td_element = driver.find_element(By.XPATH, '//*[@data-title="Docket No."]') docket_no = td_element.text.strip() # 或使用get_attribute('textContent') docket_no = td_element.get_attribute('textContent').strip()
此方法最简洁,适合子节点无额外文本的场景。
内容的提问来源于stack exchange,提问作者ScottyCov
相关产品推荐
相关产品推荐

