Beautiful Soup:从深度嵌套的 <div> 中提取

尝试从以下位置提取消息文本:


<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'})

接下来我试图继续:


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

sp = BeautifulSoup(s)

sp.contents

但这并没有多大帮助。如何从中获取消息文本<div class="Message">?


神不在的星期二
浏览 120回答 2
2回答

慕妹3242003

您可以直接从汤中找到该元素。discussion_div&nbsp;=&nbsp;soup.find("div",&nbsp;{"class":&nbsp;"ItemDiscussion"}) message_text&nbsp;=&nbsp;discussion_div.find("div",&nbsp;{"class":&nbsp;"Message"}).text

四季花海

您可以通过在元素中输入CSS 选择器来使用select_one()函数选择任何元素。select_one() 函数只会返回一个元素,如果您想要多个元素,那么您可以使用 select() 它将返回找到的元素列表。这是给你的例子,soup&nbsp;=&nbsp;BeautifulSoup(html,&nbsp;"html.parser") print&nbsp;soup.select_one("div.Item&nbsp;div.Discussion&nbsp;div.Item-BodyWrap&nbsp;div.Item-Body&nbsp;div.Message").text如果元素是唯一的,您还可以使用单个类来选择元素。print&nbsp;soup.select_one("div.Message").text
打开App,查看更多内容
随时随地看视频慕课网APP