У меня есть ниже (упрощенный) код, который использует следующий источник: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, в данном случае " ДИВ». Тем не менее, я только, кажется, могу получить тег своих детей. Я что-то пропустил? Я думал, что могу сделать ele.tag.name, но это исключение, поскольку тег - 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, а затем получить тег детей родителя и, подсчитав, сколько верхних брат Эля есть, обратный отсчет до правильного ребенка тег. Это кажется смешным.
Но это требует уже зная, что это DIV тег. – user984003
@ user984003 см. Редактирование, я предложил пример, но он должен работать так, как вы просили. важная часть состоит в том, что вы не должны делать .tag.name, просто .name напрямую –
НО, я вижу, у меня уже есть тег, поэтому я делаю: print ele.name. Я тестировал его, и он работал :) Я пропустил что-то простое! Если вы отредактируете свой ответ, чтобы сказать ele.name, тогда я проверю его как правильный ответ, когда смогу. – user984003