🌿 BeautifulSoup:Python 网页解析神器
BeautifulSoup 是一个用于从 HTML 或 XML 文档中提取数据的库,常配合 requests 使用,语法优雅,容易上手。
✅ BeautifulSoup 解决了什么问题?
直接使用正则表达式处理 HTML 太复杂、容易出错。BeautifulSoup 提供树形结构解析 HTML,使用标签名和属性轻松查找、提取页面内容:
- 🧩 快速解析 HTML/XML
- 🔍 按标签、属性、文本内容查找
- 🌳 提供文档结构化导航
📦 安装
pip install beautifulsoup4
🔌 一起使用 Requests 获取网页
从 bs4 导入 BeautifulSoup
导入 requests
响应 = requests.获取("https://example.com")
汤 = BeautifulSoup(响应.文本, "html.parser")
打印(汤.标题.文本)
🏷️ 查找标签
打印(汤.标题) # 获取 <title> 标签
打印(汤.h1) # 获取第一个 <h1>
打印(汤.段落) # <p> 是 paragraph 段落
🔍 使用 find() 和 find_all()
第一个链接 = 汤.查找("a")
所有段落 = 汤.查找全部("p")
打印(第一个链接["href"])
打印(len(所有段落))
🎯 通过属性查找标签
按钮 = 汤.查找("button", {"类": "提交按钮"})
打印(按钮.文本)
🔁 遍历多个标签
链接列表 = 汤.查找全部("a")
对于 链接 在 链接列表:
打印(链接.文本, "->", 链接["href"])
🧼 获取纯文本
打印(汤.获取文本())
🎯 常见选择器方式(CSS 选择器)
汤.选择("div.类名")
汤.选择("ul > li")
汤.选择_one("p.intro")
📄 示例:爬取网页标题与超链接
导入 requests
从 bs4 导入 BeautifulSoup
响应 = requests.获取("https://example.com")
汤 = BeautifulSoup(响应.文本, "html.parser")
打印("网页标题:", 汤.标题.文本)
对于 链接 在 汤.查找全部("a"):
打印(链接.文本.strip(), "->", 链接["href"])
🔚 小结
| 功能 | 方法 / 属性 |
|---|---|
| 解析 HTML | BeautifulSoup(text, "html.parser") |
| 查找单个标签 | find(tag) |
| 查找多个标签 | find_all(tag) |
| 选择器查找 | select(selector) |
| 提取文本内容 | tag.text / get_text() |
| 查找属性 | tag["属性名"] |