有没有办法在HTML文件中找到字符串并返回其XPath?

时间:2019-03-19 21:02:29

标签: beautifulsoup scrapy lxml python-3.7

我正在尝试在刮板中进行逆向工程,以生成用于提取数据的模型。

因此,我知道页面的标题,并且想在HTML代码中查找它,然后将XPath或CSS选择器返回到该位置。

我在项目中使用Scrapy,但是,对于这种反向工程,我认为也许Beautiful Soup 4与lxml解析器结合也可以为我提供帮助。我只是没有找到有关它的任何文档。

有人知道是否有办法吗?

1 个答案:

答案 0 :(得分:2)

如果您实际上在使用lxml,则可以使用getpath() ...

from lxml import etree

xml = """
<doc>
    <one>
        <two>
            <test>foo</test>
        </two>
        <two>
            <test>bar</test>
        </two>
    </one>
</doc>
"""

tree = etree.fromstring(xml)

for match in tree.xpath("//*[contains(text(),'bar')]"):
    print(etree.ElementTree(tree).getpath(match))

此打印:

/doc/one/two[2]/test