python - 查找包含字符串的元素的xpath

Posted

技术标签:

【中文标题】python - 查找包含字符串的元素的xpath【英文标题】:python - find xpath of element containing string 【发布时间】:2015-07-05 14:02:23 【问题描述】:

我构建了一个小脚本,它应该在页面中找到一些特定的字符串并返回包含该字符串的元素的 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]

【问题讨论】:

【参考方案1】:

您可以使用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

【讨论】:

我用 URL 尝试了你的代码:w3schools.com/xml/xpath_intro.asp。实际上有 8 个元素包括 XML 字符串,但脚本只返回 7 个元素。也许是因为小组?

以上是关于python - 查找包含字符串的元素的xpath的主要内容,如果未能解决你的问题,请参考以下文章

XPath 表达式查找标签名称包含“名称”的元素

我如何通过xpath查找具有查找元素的动态字符串?

XPath 文本/替换以查找可能包含软连字符的文本

python--通过xpath相对节点位置查找元素(续)

xpath按元素和属性查找节点,其中包含具有特定id的子元素

XPath:在进行翻译和规范化空间时查找包含精确文本的元素