Есть ли способ найти строку в файле HTML и вернуть его XPath? - PullRequest
0 голосов
/ 20 марта 2019

Я пытаюсь выполнить обратный инжиниринг в скребке, чтобы сгенерировать модель для извлечения данных.

Итак, я знаю заголовок страницы и хочу найти его внутри HTML-кода, а затемверните XPath или CSS Selector в это место.

Я использую Scrapy в своем проекте, но для этого реверс-инжиниринга я подумал, может быть Beautiful Soup 4 в сочетании с парсером lxml мне тоже может помочь.Я просто не нашел никаких документов по этому поводу.

Кто-нибудь знает, есть ли способ сделать это?

1 Ответ

2 голосов
/ 20 марта 2019

Если вы на самом деле используете 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
...