BeautifulSoup: получить имя тега самого элемента, а не его дочерних элементов

У меня есть приведенный ниже (упрощенный) код, который использует следующий источник:

<html>
    <p>line 1</p>
    <div>
        <a>line 2</a>
    </div>
</html>

soup = BeautifulSoup('<html><p>line 1</p><div><a>line 2</a></div></html>')
ele = soup.find('p').nextSibling
somehow_print_tag_of_ele_here

Я хочу получить тег элемента ele, в данном случае "div". Однако мне кажется, что я могу получить только тег его дочерних элементов. Я упустил что-то простое? Я думал, что могу сделать ele.tag.name, но это исключение, поскольку tag равен None.

#Below correctly prints the div element "<div><a>line 2</a></div>"
print ele

#Below prints "None". Printing tag.name is an exception since tag is None
print ele.tag 

#Below prints "a", the child of ele
allTags = ele.findAll(True)
for e in allTags:
    print e.name

На этом этапе я подумываю о том, чтобы сделать что-нибудь на пути получения родительского элемента для элемента ele, затем получения тегов дочерних элементов родительского элемента и, подсчитав количество старших братьев и сестер для элемента ele, обратный отсчет до правильного дочернего тега. Это кажется смешным.

14
задан user984003 16 December 2011 в 11:54
поделиться