Как я могу просто удалить все теги из элемента, который я нашел в BeautifulSoup?
Python/BeautifulSoup - как удалить все теги из элемента?
Ответ 1
С BeautifulStoneSoup
ушел в bs4
, он еще проще в Python3
from bs4 import BeautifulSoup
soup = BeautifulSoup(html)
text = soup.get_text()
print(text)
Ответ 2
почему нет ответа, который я видел, упоминал ничего о методе unwrap
? Или, что еще проще, метод get_text
http://www.crummy.com/software/BeautifulSoup/bs4/doc/#unwrap http://www.crummy.com/software/BeautifulSoup/bs4/doc/#get-text
Ответ 3
Используйте get_text(), он возвращает весь текст в документе или под тегом как одну строку Unicode.
Например, удалите все теги script из следующего текста:
<td><a href="http://www.irit.fr/SC">Signal et Communication</a>
<br/><a href="http://www.irit.fr/IRT">Ingénierie Réseaux et Télécommunications</a>
</td>
Ожидаемый результат:
Signal et Communication
Ingénierie Réseaux et Télécommunications
Вот исходный код:
#!/usr/bin/env python3
from bs4 import BeautifulSoup
text = '''
<td><a href="http://www.irit.fr/SC">Signal et Communication</a>
<br/><a href="http://www.irit.fr/IRT">Ingénierie Réseaux et Télécommunications</a>
</td>
'''
soup = BeautifulSoup(text)
print(soup.get_text())
Ответ 4
Предполагая, что вы хотите разделить теги, но сохраните содержимое, см. принятый ответ на этот вопрос: Удалить тег с помощью BeautifulSoup, но сохранить его содержимое
Ответ 5
Вы можете использовать метод разложения в bs4:
soup = bs4.BeautifulSoup('<body><a href="http://example.com/">I linked to <i>example.com</i></a></body>')
for a in soup.find('a').children:
if isinstance(a,bs4.element.Tag):
a.decompose()
print soup
Out: <html><body><a href="http://example.com/">I linked to </a></body></html>
Ответ 6
похоже, что это способ сделать! так же просто, как
с этой строкой вы соединяете все текстовые части в текущем элементе
''.join(htmlelement.find(text=True))