品牌 资讯 搭配 材料 时尚 热点 行业 首饰 玉石 行情

如何用Python Beautiful Soup解析HTML内容

2023-05-15 11:52:14 来源:脚本之家
目录
Beautiful Soup的使用标签选择器标签树操作嵌套选择标签修改HTML文本应用场景总结

Beautiful Soup是一种Python的解析库,主要用于解析和处理HTML/XML内容。它是基于Python的标准库和第三方库的结合,能够提供简便的方式实现文本的查找、修改和提取操作。

HTML指的是超文本标记语言(Hypertext Markup Language),即一种用于描述网页内容的标记语言。在我们访问一个网页的时候,浏览器便会将HTML内容下载到本地并以可视化的形式展示给我们。但是,在程序员的世界里我们需要能够对HTML内容进行更多的操作,而Beautiful Soup就是这种工具之一。


(资料图片)

Beautiful Soup能够解析HTML内容并转化成一个复杂的树结构,然后可以通过标签名、属性名等多种方式进行内容的查找和修改。使用Beautiful Soup不仅能够让我们更高效地处理HTML内容,而且还能避免很多手动操作引起的误差。

下面我们来详细介绍Beautiful Soup的使用方式和应用场景。

Beautiful Soup的使用

Beautiful Soup提供的解析器有bs3、bs4,其中bs3逐渐被弃用,目前bs4为最新版。我们主要介绍bs4的使用。

首先,我们需要安装Beautiful Soup库。在终端输入以下命令:

pip install beautifulsoup4

安装成功后,我们通过import语句将Beautiful Soup库引入程序中。

from bs4 import BeautifulSoup

接下来假设我们有一个HTML文本:


  
    Beautiful Soup Tutorial
  
  
    

Python BeautifulSoup Tutorial

这是一篇Beautiful Soup入门教程

它将介绍Beautiful Soup的基本用法以及一些高级的应用场景

点击访问示例网站

我们可以通过以下语句将HTML文本解析成BeautifulSoup对象:

soup = BeautifulSoup(html_doc, "html.parser")

其中,html_doc为上述HTML文本,"html.parser’为指定的解析器。

标签选择器

Beautiful Soup提供了多种标签选择器,能够便捷地从HTML文本中选择需要的内容。

选择标签名为h1的元素:

soup.select("h1")

结果为:

[

Python BeautifulSoup Tutorial

]

选择标签名为p且class属性为“intro”的元素:

soup.select("p.intro")

结果为:

[

这是一篇Beautiful Soup入门教程

]

选择标签名为a且class属性为“link”的元素,其href属性的值为"http://www.example.com":

soup.select("a.link[href="http://www.example.com"]")

结果为:

[点击访问示例网站]

标签树操作

我们可以通过Beautiful Soup的树型结构,对HTML文本进行各种查找与修改操作。

嵌套选择标签

可以通过嵌套选择标签,定位到HTML文本中需要的标签,例如选择“div”标签下的所有“p”标签。

content = soup.select("div.article > p")

可以看到,选择结果为两个“p”标签。

[

这是一篇Beautiful Soup入门教程

,

它将介绍Beautiful Soup的基本用法以及一些高级的应用场景

]

.string/.text属性获取标签内容

可以通过.string属性或.text属性获取标签内的文本内容。

例如,获取标题“h1”标签内的文本内容:

title = soup.select("h1")[0].string
print(title)

输出结果为:

Python BeautifulSoup Tutorial

可以看到,.string相比于.text属性更加精确,可以避免获取到标签内的其他内容干扰。

.get()方法获取标签属性值

可以通过.get()方法获取标签内的属性值。例如,获取“a”标签的href属性值:

link = soup.select("a.link")[0].get("href")
print(link)

输出结果为:

http://www.example.com

修改HTML文本

除了查找与获取HTML文本的内容,我们还可以使用Beautiful Soup对HTML文本进行修改操作。

修改标签属性值

通过tag对象的.attrs属性可以获取标签的属性,使用该属性进行修改操作。

例如,将“a”标签的href属性值修改为“http://www.newexample.com”:

link_tag = soup.select("a.link")[0]
link_tag["href"] = "http://www.newexample.com"
print(link_tag)

可以看到,输出结果中href属性值已经被修改。

点击访问示例网站

修改标签文本内容

通过tag对象的.string属性或replace_with()方法可以修改标签的文本内容。

例如,将第一个“p”标签的文本修改为“欢迎来到Beautiful Soup教程”:

p_tag = soup.select("p.intro")[0]
p_tag.string = "欢迎来到Beautiful Soup教程"
print(p_tag)

输出结果为:

欢迎来到Beautiful Soup教程

增加标签和删除标签

我们可以使用Beautiful Soup提供的函数,例如new_tag()、new_string()、append()和insert()等方法,创建新标签或文本,并插入HTML文本当中。

例如,我们通过append()方法在“body”标签的末尾增加一个“div”标签:

new_div = soup.new_tag("div")
new_div.string = "这是Beautiful Soup教程的结尾"
soup.select("body")[0].append(new_div)
print(soup)

可以看到,输出结果中的HTML文本结尾增加了一个新的“div”标签。

应用场景

美食网站信息爬取

我们将以美食网站中的“热门排行榜”为例进行演示。

首先,我们需要通过requests库获取HTML文本。以“热门排行榜”页面为例:

import requests
from bs4 import BeautifulSoup
url = "https://www.meishij.net/chufang/diy/diy_rmphb/"
html = requests.get(url)
soup = BeautifulSoup(html.text, "html.parser")

我们可以通过观察HTML文本,发现热门排行榜的信息在“div”标签中,具体位置在“div.zg_wrap”标签中,而餐品名称在“div.zg_wrap > li > div > p > a”标签中。因此,我们可以使用以下语句提取美食名称:

for i, li in enumerate(soup.select("div.zg_wrap > li")):
    name = li.select("div > p > a")[0].get("title")
    print(f"{i+1}. {name}")

可以看到,我们已成功提取出了美食名称,输出结果如下:

1. 汉堡
2. 糯米饭
3. 明炉烤鸭
4. 龙虾
5. 火锅
6. 美式薯条
7. 叉烧肉
8. 红烧肉
9. 快手美食
10. 韩国泡菜

至此,我们已经成功通过Beautiful Soup解析库,提取出了美食网站的热门排行榜信息,演示了Beautiful Soup在爬虫数据抓取和处理中的重要应用。

总结

Beautiful Soup作为一种解析库,能够方便地解析HTML/XML文本,提供多种标签选择器并支持树型结构操作,可以快速定位和处理HTML/XML中需要的内容,提高了爬虫数据抓取和处理的效率。对于Python爬虫初学者来说,掌握Beautiful Soup的使用是十分重要的。同时需要注意的是,在使用Beautiful Soup时需要遵循网络道德规范,遵守网站的规定,避免对网站造成过度访问和其他影响。

到此这篇关于如何用BeautifulSoup解析HTML内容的文章就介绍到这了,更多相关BeautifulSoup解析HTML内容内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

标签:

(责任编辑:)

相关文章

如何用Python Beautiful Soup解析HTML内容

​BeautifulSoup是一种Python的解析库,主要用于解析和处理HTML XML内容,详细介绍BeautifulSoup的使用方式和

2023-05-15 11:52:14

农行广东遂溪支行积极开展“防灾减灾救灾日”宣传

​在全国第十五个“防灾减灾救灾日”来临之际,农行广东遂溪县支行认真贯彻主题宣传活动的要求,5月12日当天

2023-05-15 11:20:55

环球时讯:甘肃省首个全绿电制氢项目开工!

​甘肃省首个全绿电制氢项目开工!5月12日,武威翌氢红沙岗可再生能源制氢及35kV绿电专线送变电工程、武威翌

2023-05-15 11:01:29

怀孕女职工被企业恶意调岗,多部门联手解决侵害女职工劳动权益问题

​“我已经拿到了公司支付的9 4万余元补偿款。接下来,可以安心等待二宝出生了……”日前,已经怀孕6个月的何

2023-05-15 10:38:13

天天快看:河北发布林光互补、草光互补项目建设标准征求意见

​河北发布林光互补、草光互补项目建设标准征求意见近日,河北省自然资源厅发布关于征求《转发《自然资源部办

2023-05-15 10:19:55

小区二次供水水箱一年须清洗两次 2023年长沙市城市节约用水宣传周活动启动 每日快播

​长沙晚报5月14日讯(全媒体记者彭玮蔚)“我们要做节约用水的倡导者,做科学用水的践行者,做节水护水的监督

2023-05-15 09:52:04

雅本化学董秘回复:公司NMN等大健康产品主要通过跨境电商平台销售,目前来看

​雅本化学(300261)05月15日在投资者关系平台上答复了投资者关心的问题。

2023-05-15 09:23:42

湖南推进中小学生心理健康工作 学校每两周安排1节心理健康课

​华声在线5月14日讯(全媒体记者余蓉通讯员雷海燕)12日上午,全省中小学生心理健康工作推进会召开,要求把握

2023-05-15 08:44:42

加德纳菌阳性怎么治疗可以彻底根治_加德纳菌

​1、大量研究表明:在性关系混乱的人群中,加德纳菌性阴道炎有高流行率。2、与患者发生性关系的男性伴侣中,

2023-05-15 07:54:01

天天观察:西南交通大学地址在哪里_西南交通大学地址

​1、如果是做火车的话,下车你可以打的,起步价就到,但是一般的士不会拉你一个去交大九里校区的。2、那边有

2023-05-15 06:44:05

萌猫头像 卡通_萌猫头像

​萌猫头像卡通,萌猫头像这个很多人还不知道,现在让我们一起来看看吧!1、这个猫叫做九藏喵你在百度搜索九藏

2023-05-15 05:58:30

多举措护航高校毕业生就业_速递

​如今毕业生就业难,已成为社会普遍关注的热点问题。传统的就业方式已难以满足日益扩大的毕业生就业需求,因

2023-05-15 02:50:16

全球即时看!脸突然变黑是什么原因引起的怎么治疗_脸突然变黑是什么原因引起的

​1、脸突然变黑,原因如下:2、一、过度暴晒,过多的紫外线照射会促进皮肤黑色素的合成,皮肤会变黑;3、二

2023-05-15 01:09:18

这一世太漫长却止步咫尺天涯间什么歌(咫尺天涯中的咫和尺哪个更长)|天天快资讯

​1、咫基本字义中国古代长度单位(周代指八寸。2、合现市尺六寸二分二厘)尺更长。本文到此分享完毕,希望对

2023-05-14 22:32:37

杭州传衡教育科技有限公司_关于杭州传衡教育科技有限公司概略-每日聚焦

​1、杭州传衡教育科技有限公司于2017年04月25日成立。法定代表人王谷扬,公司经营范围包括:服务:教育信息咨

2023-05-14 21:00:13

南水北调工程向北方调水突破620亿立方米

​新华社北京5月14日电中国南水北调集团有限公司14日宣布,南水北调东、中线一期工程目前累计向北方调水超过6

2023-05-14 19:53:22

foxmail邮件撤回操作_foxmail邮件撤回

​1、一般时候误发了邮件在对方没有阅读之前是可以进行邮件撤回的,但是一般只能是相同的邮件服务商才可以进

2023-05-14 18:57:17

世界视点!destiny怎么读的_destiny怎么读

​1、英文原文:mistakendestiny英式音标:[mɪˈsteɪk(ə)n][ˈdestɪnɪ]美式音标:[

2023-05-14 17:52:37

4家商亭卖凉皮未有凉菜制作专间 每家收到了1500元的罚单|焦点精选

​天气渐热,深受吃货们喜爱的冷菜冷食开始热卖。那么这些冷菜冷食加工过程是否符合食品安全卫生要求?近日,

2023-05-14 16:43:12

呼朋引伴的意思_呼朋引伴_世界实时

​呼朋引伴的意思,呼朋引伴这个很多人还不知道,现在让我们一起来看看吧!1、形容呼朋引伴不能用繁琐,因为呼

2023-05-14 15:38:59

高盛、富达最新发声 全球机构热议国企投资价值

​近期“中特估”成为A股市场热门话题,外资机构加强研究。不少国企、央企上市公司已获外资显著加仓。外资机

2023-05-14 14:38:25

努比亚折叠屏手机将发布:5000多元 天天观点

​努比亚新款折叠屏手机Z60Fold最近被曝光,采用了一块7 3英寸AMOLED内屏,处理器为尚未发布的高通骁龙8系列

2023-05-14 14:06:21

当前热门:支付宝心愿储蓄会不会损失本金_支付宝心愿储蓄是个坑

​1、支付宝心愿储蓄不按期转账一次、两次不会怎样,下次按时转就行,但是当你累计不转账三次以上,心愿就会

2023-05-14 13:00:35

【环球播资讯】驻韩美军黑历史再曝光:韩国女性被“献给”美国大兵

​新湖南,主流新媒体,移动新门户。-分享自@新湖南

2023-05-14 11:35:05

酸枣树的品性|全球聚焦

​原标题:酸枣树的品性岳宣義见微知著,在司空见惯的事物中发现美,于平淡中书写奇峰耸峙,是好诗文的特点。

2023-05-14 10:57:50

国寿寿险:弘扬工匠精神,让好服务触手可及

​加快数字化发展已作为国家十四五规划和2035年远景规划的重要内容,代表着当下与未来的发展方向和重点。作为

2023-05-14 09:56:19

初夏“花经济”

​5月13日,在浙江省杭州市临安区天目山镇亭口村花卉基地,花农对鲜花修剪、管护。新华社发(胡剑欢摄)初夏

2023-05-14 08:45:39

环球时讯:打通京津冀科创成果“最后一公里” 中关村(智造)中试服务平台本月底正式运营

​中试实验室内贴片生产。本报记者吴迪摄  如何把实验室里的生果子,变成市场需要的熟果子,如何把头脑中的

2023-05-14 07:52:17

给大地“把脉” 为百姓“放哨”——走近一线地震观测员

​初夏时节,草木葱茏。天津蓟州山区南麓,三排坐落于山腰的白色小楼显得格外醒目。这里是有着“津北第一台”

2023-05-14 06:14:40

手提式干粉灭火器多长时间年检_手提式干粉灭火器多久检查一次 最资讯

​1、通过消防工作人员的不断努力,灭火器越来越多地走进单位团体、居民家庭,对扑救火灾、减少危害起到了极

2023-05-14 04:39:08