Python 使用BeautifulSoup提取特定的嵌套div

Python 使用BeautifulSoup提取特定的嵌套div,python,beautifulsoup,Python,Beautifulsoup,我有以下HTML代码,我正在为其创建脚本: 我想提取突出显示的文本(“某些文本”)并将其打印。 我尝试按照我需要的div的方式遍历每个嵌套div,如下所示: import requests from bs4 import BeautifulSoup url = "the url this is from" r = requests.get(url) for div in soup.find_all("div", {"id": "main"}): for div2 in div.fi

我有以下HTML代码,我正在为其创建脚本:
我想提取突出显示的文本(“某些文本”)并将其打印。

我尝试按照我需要的div的方式遍历每个嵌套div,如下所示:

import requests
from bs4 import BeautifulSoup

url = "the url this is from"
r = requests.get(url)

for div in soup.find_all("div", {"id": "main"}):
    for div2 in div.find_all("div", {"id": "app"}):
        for div3 in div2.find_all("div", {"id": "right-sidebar"}):
            for div4 in div3.find_all("div", {"id": "chat"}):
                for div5 in div4.find_all("div", {"id": "chat-messages"}):
                    for div6 in div5.find_all("div", {"class": "chat-message"}):
                        for div7 in div6.find_all("div", {"class": "chat-message-content selectable"}):
                            print(div7.text.strip())
我实现了我在在线指南和类似问题中看到的内容,但我敢打赌这还不够,肯定有更简单的方法。
这行不通。它没有打印任何东西,我有点迷路了。我如何打印突出显示的行(实际上是div的第一个子div,id为“chat messages”)

HTML代码:

<!DOCTYPE html>

<html>
<head>
    <title>
    </title>
</head>

<body>
    <div id="main">
        <div data-reactroot="" id="app">
            <div class="top-bar-authenticated" id="top-bar">
            </div>


            <div class="closed" id="navigation-bar">
            </div>


            <div id="right-sidebar">
                <div id="chat">
                    <div id="chat-head">
                    </div>


                    <div id="chat-title">
                    </div>


                    <div id="chat-messages">
                        <div class="chat-message">
                            <div class="chat-message-avatar" style="background-image: url(&quot;https://steamcdn-a.akamaihd.net/steamcommunity/public/images/avatars/65/657dcec97cc00bc378629930ecae1776c0d981e0.jpg&quot;);">
                            </div>
                            <a class="chat-message-username clickable">
                            <div class="iron-color">
                                aloe
                            </div></a>

                            <div class="chat-message-content selectable">
                                <!-- react-text: 2532 -->some text<!-- /react-text -->
                            </div>
                        </div>


                        <div class="chat-message">
                        </div>


                        <div class="chat-message">
                        </div>


                        <div class="chat-message">
                        </div>


                        <div class="chat-message">
                        </div>


                        <div class="chat-message">
                        </div>

芦荟
一些文本

使用
lxml
解析器(即
soup=BeautifulSoup(数据,'lxml')
),您可以使用
。查找多个类就像查找嵌套div的单个类一样简单:

soup.find('div',{'class':'chat-message-content selectable'}).text

只要该类是html中唯一出现的类,上面这一行就应该适用于您。

请将html作为文本而不是图像发布,这有助于所有试图提供帮助的人@ViníciusAguiar你是对的,现在就做!这不是唯一的情况,因为这个类在每个类“聊天信息”中都有。那么,您知道其他解决方案吗?我添加了相关的HTML代码。类为“chat message”的每个div还具有class=“chat message content selective”属性,因此它不是唯一出现的div。我试过你的建议,但没用。你知道我该怎么做吗?“但这没用”-到底发生了什么?我用上面的html运行了代码行,它返回了预期的输出:
'\n一些文本\n'
。“类为“chat message”的每个div也有class=“chat message content selective”“-这在给定的示例中是不可能看到的,如果您根本没有特定的特征来区分所需的标记与其他标记,那么当然很难做到这一点。