Автоматически генерировать XPath для известного элемента в дереве HTML, используя python - PullRequest
0 голосов
/ 29 марта 2020

Есть ли способ (libs, не вручную) для генерации относительного XPath для известного элемента в HTML?

Допустим, второй P элемент внутри class="content"

<html>
    <body>
        <div class"title">
            <h1>***</h1>
        </div>
        <p> *** </p>
        <h3>***</h3>
        <div class"content">
            <p>****</p>
            <p>****</p>
        </div>
    </body>
</html>

Вариант использования: Идея состоит в том, чтобы угадать, где находятся элементы, которые могут меня заинтересовать. Например, заголовок, содержание или автор. После того, как я нашел элемент, я хочу сгенерировать для него xpath, а затем использовать Python3.

1 Ответ

0 голосов
/ 29 марта 2020

Попробуйте что-то вроде этого:

from lxml import etree

datum = """
<html>
    <body>
        <div class="title">
            <h1>***</h1>
        </div>
        <p> *** </p>
        <h3>***</h3>
        <div class="content">
            <p>something</p>
            <p>target</p>
        </div>
    </body>
</html>
"""

root = etree.fromstring(datum)
tree = etree.ElementTree(root)
find_text = etree.XPath("//p[text()='target']")
for target in find_text(root):
    print(tree.getpath(target))

Вывод:

/html/body/div[2]/p[2]
...