Я довольно долго гулял по SO, но не смог найти решение для этого. Извините, если это дубликат.
Я пытаюсь удалить все теги HTML из фрагмента, но я не хочу использовать get_text (), потому что могут быть некоторые другие теги, такие как img, что я хотел бы использовать позже. BeautifulSoup ведет себя не совсем так, как я ожидаю:
from bs4 import BeautifulSoup
html = """
<div>
<div class="somewhat">
<div class="not quite">
</div>
<div class="here">
<blockquote>
<span>
<a href = "sth.jpg"><br />content<br /></a>
</span>
</blockquote>
</div>
<div class="not here either">
</div>
</div>
</div>
"""
soup = BeautifulSoup(html, 'html.parser')
la_lista = []
for x in soup.find_all('div', {"class":"somewhat"}): # in all the "somewhat" divs
for y in x.find_all('div', {"class":"here"}): # find all the "here" divs
for inp in y.find_all("blockquote"): # in a "here" div find all blockquote tags for the relevant content
for newlines in inp('br'):
inp.br.replace_with("\n") # replace br tags
for link in inp('a'):
inp.a.unwrap() # unwrap all a tags
for quote in inp('span'):
inp.span.unwrap() # unwrap all span tags
for block in inp('blockquote'):
inp.blockquote.unwrap() # <----- should unwrap blockquote
la_lista.append(inp)
print(la_lista)
Результат выглядит следующим образом:
[<blockquote>
content
</blockquote>]
Есть идеи?