当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


Python BeautifulSoup find_all方法用法及代码示例


Beautiful Soup 的 find_all(~) 方法返回匹配特定条件的所有标签或字符串的列表。

参数

1.name | string | optional

要返回的标签的名称。

2. attrs | string | optional

要过滤的标签属性。

3. recursive | boolean | optional

布尔值,指示是否查看标签的所有后代。默认为 recursive=True

4. string | string | optional

要搜索的字符串(而不是标签)。

5. limit | number | optional

要返回的元素数量。默认为所有匹配。

例子

考虑以下 HTML 文档:

my_html = """
<div>
    <p id="alex">Alex</p>
    <p class="Bob">Bob</p>
    <p id="cathy">Cathy</p>
</div>
"""
soup = BeautifulSoup(my_html, "html.parser")

按标签名称查找

要返回所有 <p> 标签的列表:

soup.find_all("p")



[<p id="alex">Alex</p>, <p class="Bob">Bob</p>, <p id="cathy">Cathy</p>]

按属性查找

要查找带有 id="cathy" 的所有标签:

soup.find_all(id="cathy")



[<p id="cathy">Cathy</p>]

按类别查找

要查找带有 class="Bob" 的所有标签:

soup.find_all(class_="Bob")



[<p class="Bob">Bob</p>]
注意

请注意我们必须使用 class_ 而不是 class,因为它是 Python 中的保留字。

递归

考虑以下 HTML:

my_html = """
   <div id="people">
          <p>Alex</p>
          <div>
                 <p>Bob</p>
                 <p>Cathy</p>
          </div>
   <div>
"""
soup = BeautifulSoup(my_html)

要递归查找 <div id="people"> 下的 <p> 标签:

soup.find(id="people").find_all("p")



[<p>Alex</p>, <p>Bob</p>, <p>Cathy</p>]

仅查找直接位于 <div id="people"> 标签下的 <p> 标签:

soup.find(id="people").find_all("p", recursive=False)



[<p>Alex</p>]

请注意,仅返回 <div id="people"> 标记的子标记 <p> 标记。

按字符串查找

提醒一下,这是我们正在使用的 HTML:

my_html = """
<div>
    <p id="alex">Alex</p>
    <p class="Bob">Bob</p>
    <p id="cathy">Cathy</p>
</div>
"""
soup = BeautifulSoup(my_html, "html.parser")

要查找所有字符串 "Alex""Cathy"

soup.find_all(string=["Alex", "Cathy"])



['Alex', 'Cathy']

限制

将返回结果的数量限制为 2:

soup.find_all("p", limit=2)



[<p id="alex">Alex</p>, <p class="Bob">Bob</p>]

请注意我们如何仅返回前两个 <p> 标记。

相关用法


注:本文由纯净天空筛选整理自Arthur Yanagisawa大神的英文原创作品 BeautifulSoup | find_all method。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。