Python - 查找包含字符串的元素的XPath

6

我编写了一个小脚本,旨在查找页面中的特定字符串并返回包含该字符串的元素的xpath。其目的是使用此xpath查找具有相同上下文的字符串。

我正在使用以下代码:

import requests
from lxml import html
page = requests.get("http://www.w3schools.com/xpath/")
tree = html.fromstring(page.text)
result = tree.xpath('//*[. = "XML"]')

result[0] 返回 <Element b at 0x7f034a08e940> 我无法找到此元素的XPath。

我想要的字符串是:

/html/body/div[4]/div/div[2]/div[2]/div[1]/div/ul/li[2]

XPath子页面现已移动到https://www.w3schools.com/xml/xpath_intro.asp。 - dxtr80
1个回答

10
你可以使用 getpath() 方法从 element 中获取 xpath,例如:
import requests
from lxml import html

page = requests.get("http://www.w3schools.com/xpath/")
root = html.fromstring(page.text)
tree = root.getroottree()
result = root.xpath('//*[. = "XML"]')
for r in result:
    print(tree.getpath(r))

输出:

/html/body/div[3]/div/ul/li[10]
/html/body/div[3]/div/ul/li[10]/a
/html/body/div[4]/div/div[2]/div[2]/div[1]/div/ul/li[2]
/html/body/div[5]/div/div[6]/h3
/html/body/div[6]/div/div[4]/h3
/html/body/div[7]/div/div[4]/h3

1
我使用了您提供的代码并尝试了此URL: https://www.w3schools.com/xml/xpath_intro.asp。实际上,XML字符串中包含8个元素,但脚本仅返回7个元素。可能是因为面板的原因? - limonik

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接