BeautifulSoup 对象的一些常见方法
2025-03-29 04:45:55 461 分享链接 开发笔记 python
BeautifulSoup 对象(即代码里的 soup)具备许多实用方法,下面将为你介绍一些常见的方法:
查找元素类方法
find()
此方法会返回首个符合条件的元素,若未找到则返回 None。
# 查找第一个 <p> 标签
first_p = soup.find('p')find_all()
该方法会返回所有符合条件的元素,以列表形式呈现。若未找到则返回空列表。
# 查找所有 <a> 标签
all_links = soup.find_all('a')select_one()
按照 CSS 选择器查找首个匹配的元素,若未找到则返回 None。
# 查找第一个 class 为 "example" 的元素
first_example = soup.select_one('.example')select()
依据 CSS 选择器查找所有匹配的元素,以列表形式返回。若未找到则返回空列表。
# 查找所有 class 为 "example" 的元素
all_examples = soup.select('.example')获取元素属性类方法
get()
用于获取元素的属性值。
# 假设 link 是一个 <a> 标签元素
link = soup.find('a')
href = link.get('href')元素内容操作类方法
get_text()
获取元素的文本内容。
# 假设 p 是一个 <p> 标签元素
p = soup.find('p')
text = p.get_text()string
若元素仅包含一个子节点且该子节点为文本节点,就返回该文本内容;否则返回 None。
# 假设 p 是一个 <p> 标签元素
p = soup.find('p')
text = p.string元素导航类方法
parent
获取元素的父元素。
# 假设 child 是一个子元素
child = soup.find('span')
parent = child.parentchildren
获取元素的所有子元素,返回一个可迭代对象。
# 假设 parent 是一个父元素
parent = soup.find('div')
for child in parent.children:
print(child)以上只是 BeautifulSoup 对象的部分常用方法,它还有其他诸多实用方法,你可以参考 BeautifulSoup 官方文档 来了解更多。
在BeautifulSoup里,遍历子元素和兄弟元素是常见的操作,下面为你详细介绍具体方法。
遍历子元素
1. 使用 children 属性
children 属性会返回元素的直接子元素的迭代器。
from bs4 import BeautifulSoup
html = '<div><p>第一个段落</p><span>一个跨度</span></div>'
soup = BeautifulSoup(html, 'html.parser')
div = soup.find('div')
for child in div.children:
print(child)
2. 使用 descendants 属性
descendants 属性会返回元素的所有子孙元素的迭代器,也就是包含子元素、子元素的子元素等。
from bs4 import BeautifulSoup
html = '<div><p>第一个段落 <a href="#">链接</a></p><span>一个跨度</span></div>'
soup = BeautifulSoup(html, 'html.parser')
div = soup.find('div')
for descendant in div.descendants:
print(descendant)
遍历兄弟元素
1. 遍历下一个兄弟元素
- 使用
next_sibling属性可获取当前元素的下一个兄弟元素。若要遍历所有下一个兄弟元素,可结合循环使用。
from bs4 import BeautifulSoup
html = '<div><p>第一个段落</p><span>一个跨度</span><p>第二个段落</p></div>'
soup = BeautifulSoup(html, 'html.parser')
first_p = soup.find('p')
next_sibling = first_p.next_sibling
while next_sibling:
print(next_sibling)
next_sibling = next_sibling.next_sibling
- 注意:
next_sibling有时可能返回的是空白文本节点,若想跳过这些空白节点,可使用next_element或者在代码里添加判断逻辑。
2. 遍历上一个兄弟元素
- 使用
previous_sibling属性可获取当前元素的上一个兄弟元素。若要遍历所有上一个兄弟元素,可结合循环使用。
from bs4 import BeautifulSoup
html = '<div><p>第一个段落</p><span>一个跨度</span><p>第二个段落</p></div>'
soup = BeautifulSoup(html, 'html.parser')
second_p = soup.find_all('p')[1]
previous_sibling = second_p.previous_sibling
while previous_sibling:
print(previous_sibling)
previous_sibling = previous_sibling.previous_sibling
3. 使用 next_siblings 和 previous_siblings 生成器
next_siblings可直接返回当前元素后面所有兄弟元素的生成器。previous_siblings可直接返回当前元素前面所有兄弟元素的生成器。
from bs4 import BeautifulSoup
html = '<div><p>第一个段落</p><span>一个跨度</span><p>第二个段落</p></div>'
soup = BeautifulSoup(html, 'html.parser')
first_p = soup.find('p')
print("下一个兄弟元素:")
for sibling in first_p.next_siblings:
print(sibling)
second_p = soup.find_all('p')[1]
print("上一个兄弟元素:")
for sibling in second_p.previous_siblings:
print(sibling)
这些方法能帮助你在 BeautifulSoup 里灵活地遍历子元素和兄弟元素。

最近更新
- 2026-03-16 18:06
- 故事文本分镜分析与拆解模板
- 2026-03-15 00:37
- 文生图提示词优化技巧:具象化描述、要有画面感
- 2026-03-12 17:04
- 除了国风动漫还有哪些常见的动漫风格适合 AI 绘画?
- 2026-03-12 16:35
- 水墨写实、水墨写意有什么区别,还有哪些水墨家族?
- 2026-03-12 16:22
- 分享5个治愈系漫剧高频场景提示词,包括(色调、光影、风格、质感)
- 2026-03-12 16:06
- 分享10个宅斗漫剧高频场景提示词,包括(色调、光影、风格、质感)
- 2026-03-12 15:56
- 分享10个古言漫剧高频场景提示词,包括(色调、光影、风格、质感)
- 2026-03-10 19:11
- 按人物主体公式写10个与李白同时期不同诗人不同环境的提示词(唯美古风)
- 2026-03-10 18:58
- 即梦唯美古风专用、可直接复制粘贴的常用词库
- 2026-03-10 18:44
- 即梦文生图提示词12套主体完整公式(全品类、无遗漏)