Я новичок в работе с BeautifulSoup и у меня проблемы с пониманием того, почему unwrap () работает так же, как в моем случае.
У меня python 3.6.9 и beautifulsoup4 4.8.2.
Мой ввод html:
html='''
<html>
<head>
<meta charset="utf-8"/>
<link rel="stylesheet" type="text/css" href="../../common/style.css"/>
</head>
<body>
<div id="content">
<h3 HEAD /h3>
<div class="myclass">
<br>
MY TEXT
<br>
</div>
<h3 HEAD2 /h3>
<div class="myclass">
<br>
MY TEXT 2
<br>
</div>
</div>
</body>
</html>
'''
И я хочу получить содержимое div
с id
«содержимым». Я подумал, что это будет сделано с помощью unwrap()
:
soup=BeautifulSoup(html, 'lxml')
content=soup.find('div', {"id": "content"}).unwrap()
Но это дает мне тег без содержания:
print(content):
<div id="content"></div>
Что здесь происходит? Как правильно извлечь содержимое тега, не сохраняя окружающий тег?
Ожидаемый вывод:
<h3 HEAD /h3>
<div class="myclass">
<br>
MY TEXT
<br>
</div>
<h3 HEAD2 /h3>
<div class="myclass">
<br>
MY TEXT 2
<br>
</div>
Редактировать:
При использовании подхода с .children
У меня проблемы с экранированием тегов, при добавлении к объекту BeautifulSoup:
final_content=''.join([str(i) for i in content.children])
body.append(final_content)
приводит к:
<h3 head="">
<div class="myclass">
<br/>
MY TEXT
<br/>
</div>
<h3 head2="">
<div class="myclass">
<br/>
MY TEXT 2
<br/>
</div>
</h3></h3></div>