Как в Python с помочью BS4 вытащить из тега текст исключая вложенные теги?
необходимо вытащить текст который находится внутри тега
при этом игнорируя содержимое вложенных тегов и и записать полученные данные в одну переменную?
from bs4 import BeautifulSoup
html = '''
<div itemprop="articleBody">
<p align="center"><strong>Заголовок</strong></p>
<p><strong>еще текст</strong></p>
<p>Бла бла</p>
<p>Бла бла бла</p>
<p><img src="../01.jpg"/></p>
<p><img src="../02.jpg"/></p>
</div>
'''
soup = BeautifulSoup(html, 'html.parser')
tag = soup.find("div", itemprop="articleBody")
tag.strong.decompose()
tag.img.decompose()
print(tag.text)
decompose() удаляет по одному элементу, но количество элементов таких элементов может меняться.
Еще пробовал сделать так, но не получается запихнуть результат в одну переменную
soup = BeautifulSoup(html, 'html.parser')
tag = soup.find("div", itemprop="articleBody")
for el in tag:
try:
tag.strong.decompose()
tag.img.decompose()
except:
pass
print(el.text)
Ответы (2 шт):
Автор решения: WhtFck
→ Ссылка
Получилось сделать так
soup = BeautifulSoup(html, 'html.parser')
tag = soup.find("div", itemprop="articleBody")
for el in tag:
# print(el)
try:
tag.strong.decompose()
tag.img.decompose()
except:
pass
# print(el)
names = [str(i.text) for i in tag]
print(names)
Автор решения: Сергей Ш
→ Ссылка
html = '''
<div itemprop="articleBody">
<p align="center"><strong>Заголовок</strong></p>
<p><strong>еще текст</strong></p>
<p>Бла бла</p>
<p>Бла бла бла</p>
<p><img src="../01.jpg"/></p>
<p><img src="../02.jpg"/></p>
</div>
'''
soup = BeautifulSoup(html, 'html.parser')
tag = soup.find("div", itemprop="articleBody")
names = list(tag.strings)
print(names)
names = list(tag.stripped_strings)
print(names)
['\n', 'Заголовок', '\n', 'еще текст', '\n', 'Бла бла', '\n', 'Бла бла бла', '\n', '\n', '\n']
['Заголовок', 'еще текст', 'Бла бла', 'Бла бла бла']