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>
標記。
相關用法
- Python BeautifulSoup find_all_next方法用法及代碼示例
- Python BeautifulSoup find_next方法用法及代碼示例
- Python BeautifulSoup find_next_sibling方法用法及代碼示例
- Python BeautifulSoup find_previous_sibling方法用法及代碼示例
- Python BeautifulSoup find_parent方法用法及代碼示例
- Python BeautifulSoup find_parents方法用法及代碼示例
- Python string find()用法及代碼示例
- Python BeautifulSoup find方法用法及代碼示例
- Python NumPy finfo方法用法及代碼示例
- Python calendar firstweekday()用法及代碼示例
- Python NumPy fill_diagonal方法用法及代碼示例
- Python filecmp.cmpfiles()用法及代碼示例
- Python fileinput.filelineno()用法及代碼示例
- Python fileinput.lineno()用法及代碼示例
- Python fileinput.input用法及代碼示例
- Python NumPy fix方法用法及代碼示例
- Python fileinput.isfirstline()用法及代碼示例
- Python fileinput.input()用法及代碼示例
- Python fileinput.filename()用法及代碼示例
- Python filter()用法及代碼示例
- Python NumPy fliplr方法用法及代碼示例
- Python dict fromkeys()用法及代碼示例
- Python frexp()用法及代碼示例
- Python functools.wraps用法及代碼示例
注:本文由純淨天空篩選整理自Arthur Yanagisawa大神的英文原創作品 BeautifulSoup | find_all method。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。