将 beautifulsoup 中的 findall() 限制为 html 的一部分

Limiting findall() in beautifulsoup to just a section of the html

这是我的情况,我正在使用此代码抓取此 html,但我找不到如何将第一部分与第二部分分开。我只想刮掉第一部分并分开第二部分。使用 beautifulsoup4

html

<div id="first_content" class="header">
    <div class="list">
        <div class="row">
            <a name="03049302"></a>
            <div class="col-xs-12 drop-panel-content">
                <p>
                    first section first text. </p>
            </div>
            <div class="drop-panel drop-panel-one-row-height">
                <p class="text-center">Edit</p>
                <p class="text-center">Share</p>
            </div>
        </div>
        <div class="row">
            <a name="03049303"></a>
            <div class="col-xs-12 drop-panel-content">
                <p>

                    first section second text. </p>
            </div>
            <div class="drop-panel drop-panel-one-row-height">
                <p class="text-center">Edit</p>
                <p class="text-center">Share</p>
                <section id="second_content">
                    <a name="aname" class="btn-collapse collapsed" data-toggle="collapse" data-target="#aname">
                        <h3>A Name</h3>
                    </a>
                    <div class="collapse flush-width flush-down" id="aname">
                        <div class="list">
                            <div class="row">
                                <a name="03049304"></a>
                                <div class="col-xs-12 drop-panel-content">
                                    <p>

                                        second section first text. </p>
                                </div>
                                <div class="drop-panel drop-panel-one-row-height">
                                    <p class="text-center">Edit</p>
                                    <p class="text-center">Share</p>
                              </div>

这是代码:

try:
    all_data = myData(link).findAll("div", {"class": "col-xs-12 drop-panel-content"})
    for data in all_data:
        print data.text

except AttributeError as e:
    return None

**Apart as in not in the same output

当前输出

first section first text.
first section second text.
second section first text.

想要输出

first section first text.
first section second text.

和想要的输出,除了在另一个函数中可能

second section first text.

一种选择是使用 section 标记来区分各个部分。第二部分在 section 标签内,但第一部分不在。

all_data = soup.find_all("div", {"class": "col-xs-12 drop-panel-content"})
for data in all_data:
    if data.find_parent("section") is None:
        print data.get_text(strip=True)

或者,如果只有 2 个第一节文本,只需对节文本列表进行切片:

all_data = soup.find_all("div", {"class": "col-xs-12 drop-panel-content"})[:2]
for data in all_data:
    print data.get_text(strip=True)