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

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.

相关推荐
热点推荐
曝光了!唐斯潜在下家!已经轰动NBA交易市场

曝光了!唐斯潜在下家!已经轰动NBA交易市场

篮球实战宝典
2026-10-15 22:31:47
今日重要赛事!10月16日,央视CCTV5、CCTV5+直播节目表

今日重要赛事!10月16日,央视CCTV5、CCTV5+直播节目表

薇说体育
2026-10-16 10:15:06
尹锡悦因“制造朝鲜平壤上空无人机入侵事件”,被判处有期徒刑30年,二审维持原判

尹锡悦因“制造朝鲜平壤上空无人机入侵事件”,被判处有期徒刑30年,二审维持原判

扬子晚报
2026-10-16 14:37:45
横店空了!剧组暴跌八成,15万群演在景区找到新饭碗,日薪还涨了

横店空了!剧组暴跌八成,15万群演在景区找到新饭碗,日薪还涨了

阿废冷眼观察所
2026-10-15 12:31:05
1958年江青前夫临终时不断喊着:江青到底是什么人?

1958年江青前夫临终时不断喊着:江青到底是什么人?

史看人生
2026-10-16 06:00:03
我发现一个奇怪的现象:现在很多退休的人,不好好享受退休生活,都跑去上班了!

我发现一个奇怪的现象:现在很多退休的人,不好好享受退休生活,都跑去上班了!

蝉吟槐蕊
2026-10-15 19:24:38
巴西是我去过60个国家里,唯一一个发誓绝不去第二次的地方

巴西是我去过60个国家里,唯一一个发誓绝不去第二次的地方

千秋文化
2026-05-08 10:14:04
浙江一对新人结婚当天,婚房被烧了!老丈人十分后悔:突然接到电话,婚宴都顾不上直接往家赶……

浙江一对新人结婚当天,婚房被烧了!老丈人十分后悔:突然接到电话,婚宴都顾不上直接往家赶……

环球网资讯
2026-10-16 13:40:09
从35楼坠落奇迹生还,湖南网红“晚安安”宣布复出!主治医生称其器官功能已基本恢复

从35楼坠落奇迹生还,湖南网红“晚安安”宣布复出!主治医生称其器官功能已基本恢复

潇湘晨报
2026-10-14 18:01:47
江西一男子刷短视频时误点保险广告,被自动扣取7.2万余元保费,客服称线上投保无需签字,退款仅退7000多元,律师:违规销售应全额退款

江西一男子刷短视频时误点保险广告,被自动扣取7.2万余元保费,客服称线上投保无需签字,退款仅退7000多元,律师:违规销售应全额退款

台州交通广播
2026-10-15 23:55:05
中国邮政储蓄银行原党委委员、副行长曲家文被查

中国邮政储蓄银行原党委委员、副行长曲家文被查

新京报
2026-10-16 14:49:04
看看加拿大老人退休后的生活,再看看中国老人,真的没法比!

看看加拿大老人退休后的生活,再看看中国老人,真的没法比!

江启
2026-10-15 23:33:12
11月1日起社保缴费有新变化,网友:一年换一次劳务派遣公司,啥都不给交

11月1日起社保缴费有新变化,网友:一年换一次劳务派遣公司,啥都不给交

东方豪侠
2026-10-16 08:21:20
恶人还需恶人磨,吹牛老爹在监狱被大毒枭暴揍,紧急送医

恶人还需恶人磨,吹牛老爹在监狱被大毒枭暴揍,紧急送医

观察者网
2026-10-15 17:16:18
普京:将对乌攻击俄能源和物流设施作出回应

普京:将对乌攻击俄能源和物流设施作出回应

澎湃新闻
2026-10-16 01:14:04
林葳首秀进步明显!出手+持球+防守均有提升,但球队拉完了!

林葳首秀进步明显!出手+持球+防守均有提升,但球队拉完了!

篮球资讯达人
2026-10-16 12:44:44
688元仅自提!荒唐“硬件软化工程师”走红闲鱼平台,引发轩然大波

688元仅自提!荒唐“硬件软化工程师”走红闲鱼平台,引发轩然大波

火山詩话
2026-10-14 12:27:02
游客订了广东惠东双月湾一民宿,提前2天退订遭拒;游客:全额扣款不合理;商家:已提供解决方案,游客执意退订,单方面违约;官方回应

游客订了广东惠东双月湾一民宿,提前2天退订遭拒;游客:全额扣款不合理;商家:已提供解决方案,游客执意退订,单方面违约;官方回应

南方都市报
2026-10-15 22:57:40
懂车帝测试人连发多文,硬钢尊界

懂车帝测试人连发多文,硬钢尊界

正经社
2026-10-14 10:32:18
为寻求变态刺激,男子多次迷晕妻子供陌生男子强奸,自己在场拍照!法院:构成轮奸,判11年

为寻求变态刺激,男子多次迷晕妻子供陌生男子强奸,自己在场拍照!法院:构成轮奸,判11年

一丝不苟的法律人
2026-10-15 09:31:24
2026-10-16 15:40:49
MediaTea
MediaTea
专业的数字媒体、新媒体技术
2235文章数 85关注度
往期回顾 全部

科技要闻

杨天若院士:AI是中国弯道超车的机会

头条要闻

会"飞"的特斯拉来了:中国官网开放预订 意向金33.2万

头条要闻

会"飞"的特斯拉来了:中国官网开放预订 意向金33.2万

体育要闻

工资一分不要,曼联名将想把母队带回西甲

娱乐要闻

徐艺洋官宣生子,完全看不出生过宝宝

财经要闻

特斯拉“飞”起来了!意向金33.2万元

汽车要闻

1213公里不充电 宝马这台纯电车真能跑这么远?

态度原创

手机
艺术
旅游
教育
公开课

手机要闻

三星Galaxy A38手机影像规格曝光,沿用5000万像素主摄方案

艺术要闻

让人心醉的风景,德米特里·西索耶夫油画!

旅游要闻

高平文旅亮相“晋城好风光 青春向太行”高校行

教育要闻

给老姐上一课

公开课

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

无障碍浏览 进入关怀版