网易首页 > 网易号 > 正文 申请入驻

Python 第三方库:Beautiful Soup(HTML/XML 解释提取)

0
分享至

Beautiful Soup 是一个 用于从 HTML 和 XML 文件中提取数据的 Python 第三方库。它为复杂的网页结构提供了简单易用的解析接口,尤其适合网页爬虫和数据提取任务。Beautiful Soup 提供树型结构访问、标签搜索、属性提取等功能,并支持多种解析器(如 html.parser、lxml、html5lib)。

底层原理是将网页结构转为“导航树”,用户可以像操作 DOM 一样获取任意节点信息。

安装:

pip install beautifulsoup4

常见应用场景:

(1)网页爬虫中的 HTML 内容解析。

(2)网页结构分析与标签提取。

(3)XML 数据解析。

(4)网站信息清洗与提取(如新闻、价格、评论等)。

(5)教学演示 HTML/XML 树结构解析过程。

◆ ◆

核心概念

1、BeautifulSoup 对象

将 HTML 文本转化为树形结构的解析对象,是所有操作的入口。

2、标签(Tag)

对应 HTML/XML 中的每个元素节点。

3、NavigableString

HTML 中的文本部分。

4、属性字典(attrs)

标签的属性信息(如 href,class 等)。

5、解析器选择

支持内建的 html.parser,以及更强大的 lxml、html5lib。

◆ ◆

应用举例

例 1: 基本解析和标签获取

from bs4 import BeautifulSoup

html_doc = """
Example

"""

soup = BeautifulSoup(html_doc, 'html.parser')
print(soup.title)         # 输出: Example
print(soup.title.string)  # 输出:Example
print(soup.a['href'])     # 输出:链接地址

例 2:查找所有特定标签

from bs4 import BeautifulSoup

html_doc = """
Example

"""

soup = BeautifulSoup(html_doc, 'html.parser')
links = soup.find_all('a')
for link in links:
    print(link.get('href'))    # 输出:http://example.com

例 3:使用 CSS 选择器查找元素

from bs4 import BeautifulSoup

html_doc = """
Example

"""

soup = BeautifulSoup(html_doc, 'html.parser')
items = soup.select("p.title a")  # 类似 jQuery 的语法
for item in items:
    print(item.text)    # 输出:Example Link

例 4:提取属性、类名、ID

from bs4 import BeautifulSoup

html_doc = """
Example

"""

soup = BeautifulSoup(html_doc, 'html.parser')
tag = soup.find('p', class_='title')
print(tag['class'])       # 输出:['title']
print(tag.get('class'))   # 同上

例 5:遍历父节点、子节点、兄弟节点

from bs4 import BeautifulSoup

html_doc = """
Example

"""

soup = BeautifulSoup(html_doc, 'html.parser')
a_tag = soup.a                  # 相当于 soup.find("a")
print(a_tag.parent.name)        # 父标签
print(a_tag.next_sibling)       # 下一个兄弟节点

◆ ◆

常用方法与属性

BeautifulSoup(markup, parser)

构建解析对象。

参数

markup:HTML/XML 字符串或文件对象

parser:解析器类型(如 'html.parser', 'lxml')

返回:BeautifulSoup 对象

find(name, attrs, recursive, string, **kwargs)

查找第一个匹配的标签。

参数

name:标签名

attrs:属性字典

string:文本内容匹配

返回:Tag 对象或 None

find_all(name, attrs, string, limit, **kwargs)

查找所有匹配标签。

参数

同上,可加 limit 限制个数

返回:包含多个 Tag 的列表(list)

select(selector)

使用 CSS 选择器查找节点。

参数

selector:如 "div > a.title"

返回:符合条件的 Tag 列表(list)

get_text(strip=False)

获取标签内所有文本。

参数

strip:是否去除首尾空白

返回:字符串

contents / children

访问子节点。

返回

contents 是列表

children 是生成器

parent / parents

访问父节点或所有祖先节点。

返回:Tag 或迭代器

next_sibling / previous_sibling

访问兄弟节点。

返回:Tag 或文本节点

attrs

访问标签属性。

返回:字典 {属性名: 属性值}

◆ ◆

补充说明

1、推荐解析器:

html.parser(标准库,自带)

lxml(速度快,需安装)

html5lib(容错性最好,最接近浏览器行为)

安装方法:

pip install beautifulsoup4 lxml

2、配合 使用是最常见的爬虫组合:

import requests
from bs4 import BeautifulSoup

url = "https://example.com"
html = requests.get(url).text
soup = BeautifulSoup(html, "lxml")

点赞有美意,赞赏是鼓励

特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。

Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.

相关推荐
热点推荐
雷军抛出55万辆的小目标,流量反噬教小米做人?

雷军抛出55万辆的小目标,流量反噬教小米做人?

DearAuto
2026-01-09 09:59:32
CBA记者痛批北京队1人:要是客场早被罚出去了,打得什么玩意儿?

CBA记者痛批北京队1人:要是客场早被罚出去了,打得什么玩意儿?

体育哲人
2026-01-10 11:14:54
52票赞成,47票反对,美参议院推进决议限制特朗普对委动武,多名共和党议员“反水”!特朗普怒斥:削弱总统权力!委内瑞拉:不屈服

52票赞成,47票反对,美参议院推进决议限制特朗普对委动武,多名共和党议员“反水”!特朗普怒斥:削弱总统权力!委内瑞拉:不屈服

每日经济新闻
2026-01-09 13:25:05
浙江公示:汪顺、潘展乐、黄雅琼等31人拟记大功

浙江公示:汪顺、潘展乐、黄雅琼等31人拟记大功

大象新闻
2026-01-10 10:49:09
2026新规落地!机关事业退休人员住房补贴申领,4个条件缺一不可

2026新规落地!机关事业退休人员住房补贴申领,4个条件缺一不可

慧眼看世界哈哈
2026-01-09 16:05:15
94年母亲带我回娘家借学费,到了开不了口,临走时大舅拦下我们

94年母亲带我回娘家借学费,到了开不了口,临走时大舅拦下我们

青青会讲故事
2025-05-01 05:00:06
国内解说员:詹姆斯一定是全明星首发,东契奇会把首发让给詹姆斯

国内解说员:詹姆斯一定是全明星首发,东契奇会把首发让给詹姆斯

摸神drose
2026-01-10 22:17:43
最新! 中国新增20.4万颗卫星申请,美国批准SpaceX新增7500颗卫星!下周商业航天还要冲?

最新! 中国新增20.4万颗卫星申请,美国批准SpaceX新增7500颗卫星!下周商业航天还要冲?

价值线传媒
2026-01-10 18:23:19
A股:大家做好准备,不出意外,1月12日,下周一将上演熟悉的剧情

A股:大家做好准备,不出意外,1月12日,下周一将上演熟悉的剧情

深析古今
2026-01-10 09:22:53
乌度卡:杜兰特被换2分钟就被打11-0,其他人心理素质太差了

乌度卡:杜兰特被换2分钟就被打11-0,其他人心理素质太差了

懂球帝
2026-01-10 14:18:13
港影:《九龙城寨之龙头》,郭古番位未定,又传周刘争演雷震东?

港影:《九龙城寨之龙头》,郭古番位未定,又传周刘争演雷震东?

唐泪
2026-01-10 12:29:24
CBA第12轮最佳阵容:王哲林11中10率上海升第一 辽篮双核入选

CBA第12轮最佳阵容:王哲林11中10率上海升第一 辽篮双核入选

醉卧浮生
2026-01-10 14:53:13
宜家变天!家具卖不动狂亏10亿,却靠9.9元套餐成年轻人的避风港

宜家变天!家具卖不动狂亏10亿,却靠9.9元套餐成年轻人的避风港

素衣读史
2026-01-10 18:36:59
3:0?张本再战小勒布伦,11:9旧仇未报,决赛级预演

3:0?张本再战小勒布伦,11:9旧仇未报,决赛级预演

体坛黑馬
2026-01-10 14:44:14
一百多年前,康有为花费 150 万在欧洲购得一座岛,时至今日,这座岛的产权到底归谁所有?

一百多年前,康有为花费 150 万在欧洲购得一座岛,时至今日,这座岛的产权到底归谁所有?

源溯历史
2026-01-02 18:50:36
回国了我才敢说:委内瑞拉,是我去过的所有国家中,最被看轻的!

回国了我才敢说:委内瑞拉,是我去过的所有国家中,最被看轻的!

阿纂看事
2026-01-09 09:48:35
重磅!安踏拟收购德国彪马29%股权

重磅!安踏拟收购德国彪马29%股权

闽商报
2026-01-10 12:57:46
1991 年,邓小平特派代表赴美团聚张学良,邀他重返故土,张学良回应:“回大陆可以,但我有三个要求”

1991 年,邓小平特派代表赴美团聚张学良,邀他重返故土,张学良回应:“回大陆可以,但我有三个要求”

文史明鉴
2025-12-21 17:07:19
黎马良重提中越战争:中方五日不撤谅山主力恐全歼,结局究竟如何

黎马良重提中越战争:中方五日不撤谅山主力恐全歼,结局究竟如何

唠叨说历史
2026-01-06 15:26:32
傅首尔的困境有多难解?一露头就全网抵制,她不再被网友宽容了?

傅首尔的困境有多难解?一露头就全网抵制,她不再被网友宽容了?

小熊侃史
2026-01-09 07:35:03
2026-01-10 23:12:49
MediaTea
MediaTea
专业的数字媒体、新媒体技术
1698文章数 72关注度
往期回顾 全部

科技要闻

传DeepSeek准备第二次震惊全世界

头条要闻

雷军:SU7是唯一击败Model 3的同档纯电轿车

头条要闻

雷军:SU7是唯一击败Model 3的同档纯电轿车

体育要闻

怒摔水瓶!杜兰特30+12 难阻火箭遭双杀

娱乐要闻

吴速玲曝儿子Joe是恋爱脑

财经要闻

这不算诈骗吗?水滴保诱导扣款惹众怒

汽车要闻

宝马25年全球销量246.3万台 中国仍是第一大市场

态度原创

家居
教育
本地
数码
公开课

家居要闻

木色留白 演绎现代自由

教育要闻

学习的底层逻辑,藏在作息表里

本地新闻

云游内蒙|“包”你再来?一座在硬核里酿出诗意的城

数码要闻

追觅AI电视首秀CES 2026,全场景生态布局更进一步

公开课

李玫瑾:为什么性格比能力更重要?

无障碍浏览 进入关怀版