Красивый суп: извлечение из глубоко вложенных <div> - PullRequest
2 голосов
/ 05 марта 2020

Пытается извлечь текст сообщения из:

<div class="Item ItemDiscussion Role_Member" id="Discussion_2318">
<div class="Discussion">
<div class="Item-BodyWrap">
<div class="Item-Body">
<div class="Message">
                Hello<br/>I have a very interesting observation on nature of birds in Alaska ...  <br/>
 Was there  10/19/18 has anyone heard of this     </div>
<div class="ReactionRecord"></div><div class="Reactions"></div> </div>
</div>
</div>
</div>

У меня есть этот бит с:

tag = soup.find('div', {'class' : 'ItemDiscussion'})

Далее я пытаюсь go вниз с:

s = str((tag.contents)[1])
sp = BeautifulSoup(s)
sp.contents

Но это мало помогает. Как получить текст сообщения от <div class="Message">?

Ответы [ 2 ]

1 голос
/ 05 марта 2020

Вы можете найти элемент из супа напрямую.

discussion_div = soup.find("div", {"class": "ItemDiscussion"})
message_text = discussion_div.find("div", {"class": "Message"}).text
1 голос
/ 05 марта 2020

Вы можете выбрать любой элемент, используя функцию select_one () , введя CSS Селектор для элемента. Функция select_one () вернет только один элемент, если вы хотите более одного элемента, тогда вы можете использовать select (), который вернет список найденных элементов. Вот вам пример:

soup = BeautifulSoup(html, "html.parser")
print soup.select_one("div.Item div.Discussion div.Item-BodyWrap div.Item-Body div.Message").text

Вы также можете выбрать свой элемент, используя один класс, если он уникален.

print soup.select_one("div.Message").text
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...