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。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。