как в beautifulsoup исключать строки?
Вот код:
from bs4 import BeautifulSoup
doc = open(r'C:\Users\QuosX\Desktop\сообщения\messages0.html')
soup = BeautifulSoup(doc, "html.parser")
message = soup.findAll ("div")
text = soup.a.text
print(text)
Выдает что-то наподобие такого:
</div></div>
</div><div class="item">
<div class="item__main"><div class="message" data-id="123123">
<div class="message__header">Вы, 1 мая 2020 в 13:54:55</div>
<div>НУЖНЫЙ ТЕКСТ</div>
</div></div>
</div><div class="item">
<div class="item__main"><div class="message" data-id="1231212">
<div class="message__header">Вы, 1 мая 2020 в 13:54:54</div>
<div>НУЖНЫЙ ТЕКСТ</div>
</div></div>
</div><div class="item">
Он спарсил все div-ы, но мне нужны только те, где есть НУЖНЫЙ ТЕКСТ, а остальные убрать, как это сделать?
Ответы (1 шт):
Автор решения: nomnoms12
→ Ссылка
Вы можете парсить только те div'ы, где есть необходимый текст. Для этого воспользуйтесь атрибутом text.
Пример:
from bs4 import BeautifulSoup
with open('index.html', encoding='utf-8') as f:
soup = BeautifulSoup(f.read(), 'lxml')
result = soup.findAll('div', text='НУЖНЫЙ ТЕКСТ')
print(result)
stdout:
[<div>НУЖНЫЙ ТЕКСТ</div>, <div>НУЖНЫЙ ТЕКСТ</div>]
index.html:
<div class="item">
<div class="item__main">
<div class="message" data-id="123123">
<div class="message__header">Вы, 1 мая 2020 в 13:54:55</div>
<div>НУЖНЫЙ ТЕКСТ</div>
</div>
</div>
</div>
<div class="item">
<div class="item__main">
<div class="message" data-id="1231212">
<div class="message__header">Вы, 1 мая 2020 в 13:54:54</div>
<div>НУЖНЫЙ ТЕКСТ</div>
</div>
</div>
</div>