python - Python 中的 Xpath 生成器

标签 python xml xpath selenium

<分区>

我正在用 Python 构建相对复杂的 xpath 表达式,以便将它们传递给 selenium。然而,它很容易出错,所以我正在寻找一个库,它允许我在不乱用字符串的情况下构建表达式。例如,而不是写

locator='//ul[@class="comment-contents"][contains(., "West")]/li[contains(., "reply")]

我可以这样写:

import xpathbuilder as xpb
locator = xpb.root("ul")
             .filter(attr="class",value="comment-contents")
             .filter(xpb.contains(".", "West")
             .subclause("li")
             .filter(xpb.contains (".", "reply"))

这可能不那么可读,但不太容易出错。有这样的东西吗?

最佳答案

虽然这不是您想要的..您可以使用 css 选择器

...
import lxml.cssselect
csssel = 'div[class="main"]'
selobj = lxml.cssselect.CSSSelector(csssel)
elements = selobj(documenttree)

生成的 XPath 表达式在 selobj.path

>>> selobj.path
u"descendant-or-self::div[@class = 'main']"

关于python - Python 中的 Xpath 生成器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1934720/

相关文章:

python - 批量保存数据到图像: need speedup

c++ - 如何使用 RapidXml 解析 XML 文件

c# - 如何使用C#获取XML中特定属性的值?

python - 如何使用 QtWebEngine 在 Raspberry Pi 上安装 PySide2/PyQt5?

python - 数据框将标题行转换为行 Pandas

python - 正则表达式否定捕获组返回答案

SOLR的XML结果

java - 在 JAXB API 中向 xml 元素添加属性

xml - 使用 XPath 查询 XSD 以获取节点详细信息

xml - 返回列索引的 XPath