【问题标题】:Is there a way to find a string in a HTML file and return its XPath?有没有办法在 HTML 文件中查找字符串并返回其 XPath?
【发布时间】:2019-08-10 12:11:21
【问题描述】:

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

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

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

有谁知道有没有办法做到这一点?

【问题讨论】:

  • 是的.. 您可以在 DOM 中进行冗长的步行,构建 xpath,直到您找到所需的元素。但是这个问题太宽泛/离题了。

标签: beautifulsoup scrapy lxml python-3.7


【解决方案1】:

如果你实际使用的是 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

【讨论】:

  • 谢谢,丹尼尔!它实际上完全按照我的需要工作!
猜你喜欢
  • 2020-02-01
  • 1970-01-01
  • 1970-01-01
  • 2014-06-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-10-04
相关资源
最近更新 更多