使用Python Selenium提取script标签文本失败的问题求助
问题:Python Selenium无法提取script标签内文本
目标是使用Python Selenium提取高亮显示的文本,右键复制完整XPath得到/html/body/script[1]/text(),尝试以下6种方法均无法提取目标文本:
- 尝试1:
element = driver.find_element(By.XPATH, "/html/body/script[1]/text()").text print(element)
错误信息:
selenium.common.exceptions.InvalidSelectorException: Message: invalid selector: The result of the xpath expression "/html/body/script[1]/text()" is: [object Text]. It should be an element.
- 尝试2:
element = driver.find_element(By.XPATH, "/html/body/script[1]").text print(element)
结果:打印空白内容
- 尝试3:
element = driver.find_elements(By.XPATH, "/html/body/script[1]").text print(element)
错误信息:
AttributeError: 'list' object has no attribute 'text'
- 尝试4:
for element in driver.find_element(By.XPATH, "/html/body/script[1]"): print(element)
错误信息:
TypeError: 'WebElement' object is not iterable
- 尝试5:
for element in driver.find_elements(By.XPATH, "/html/body/script[1]"): print(element)
结果:
<selenium.webdriver.remote.webelement.WebElement (session="31e0e98bb28d49019385c0cff458fa02", element="e505e171-2ba5-4f29-beb2-ea99a7aa89e4")>
- 尝试6:
for element in driver.find_elements(By.XPATH, "/html/body/script[1]"): print(element.text)
结果:打印空白内容
解决方法
Selenium的text属性仅能获取元素的可见文本,script标签内的内容属于元素的内部文本,需通过以下方式提取:
方法1:使用get_attribute('innerHTML')
script_element = driver.find_element(By.XPATH, "/html/body/script[1]") print(script_element.get_attribute('innerHTML'))
方法2:使用get_attribute('textContent')
script_element = driver.find_element(By.XPATH, "/html/body/script[1]") print(script_element.get_attribute('textContent'))
方法3:通过JavaScript执行XPath提取文本节点
如果需要直接针对文本节点提取,可借助execute_script执行JS:
text = driver.execute_script("return document.evaluate('/html/body/script[1]/text()', document, null, XPathResult.STRING_TYPE, null).stringValue;") print(text)
内容的提问来源于stack exchange,提问作者ZackCase
相关产品推荐
相关产品推荐

