получить родительский элемент тега с использованием Python-HTML-запросов - PullRequest
0 голосов
/ 12 марта 2019

Привет. Есть ли способ получить все родительские элементы тега, используя запросы HTML?

например:

<!DOCTYPE html>
<html lang="en">
<body id="two">
    <h1 class="text-primary">hello there</h1>
    <p>one two tree<b>four</b>five</p>
</body>
</html> 

Я хочу получить всех родителей тега b: [html, body, p]

или для тега h1 получите такой результат: [html, body]

1 Ответ

0 голосов
/ 12 марта 2019

С отличным lxml:

from lxml import etree
html = """<!DOCTYPE html>
<html lang="en">
<body id="two">
    <h1 class="text-primary">hello there</h1>
    <p>one two tree<b>four</b>five</p>
</body>
</html> """
tree = etree.HTML(html)
# We search the first <b> element
b_elt = tree.xpath('//b')[0]
print(b_elt.text)
# -> "four"
# Walking around ancestors of this <b> element
ancestors_tags = [elt.tag for elt in b_elt.iterancestors()]
print(ancestors_tags)
# -> [p, body, html]
...