當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


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。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。