我的编程空间,编程开发者的网络收藏夹
学习永远不晚

如何用PythonBeautiful Soup解析HTML内容

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

如何用PythonBeautiful 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文本:

<html>
  <head>
    <title>Beautiful Soup Tutorial</title>
  </head>
  <body>
    <div class="article">
      <h1>Python BeautifulSoup Tutorial</h1>
      <p class="intro">这是一篇Beautiful Soup入门教程</p>
      <p class="content">它将介绍Beautiful Soup的基本用法以及一些高级的应用场景</p>
      <a class="link" href="http://www.example.com">点击访问示例网站</a>
    </div>
  </body>
</html>

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

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

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

标签选择器

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

选择标签名为h1的元素:

soup.select('h1')

结果为:

[<h1>Python BeautifulSoup Tutorial</h1>]

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

soup.select('p.intro')

结果为:

[<p class="intro">这是一篇Beautiful Soup入门教程</p>]

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

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

结果为:

[<a class="link" href="http://www.example.com">点击访问示例网站</a>]

标签树操作

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

嵌套选择标签

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

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

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

[<p class="intro">这是一篇Beautiful Soup入门教程</p>, 
 <p class="content">它将介绍Beautiful Soup的基本用法以及一些高级的应用场景</p>]

.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属性值已经被修改。

<a class = "link" href = "http://www.newexample.com">点击访问示例网站</a>

修改标签文本内容

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

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

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

输出结果为:

<p class = "intro">欢迎来到Beautiful Soup教程</p>

增加标签和删除标签

我们可以使用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时需要遵循网络道德规范,遵守网站的规定,避免对网站造成过度访问和其他影响。

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

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

如何用PythonBeautiful Soup解析HTML内容

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

如何用PythonBeautiful Soup解析HTML内容

BeautifulSoup是一种Python的解析库,主要用于解析和处理HTML/XML内容,详细介绍BeautifulSoup的使用方式和应用场景,本文给大家介绍的非常详细,需要的朋友可以参考下
2023-05-20

使用Python Beautiful Soup解析HTML内容的方法

今天小编给大家分享的是使用Python Beautiful Soup解析HTML内容的方法,相信很多人都不太了解,为了让大家更加了解,所以给大家总结了以下内容,一起往下看吧。一定会有所收获的哦。目录Beautiful Soup的使用标签选择
2023-07-06

如何使用 JavaScript 替换 HTML 内容

JavaScript 是一种广泛应用于 Web 开发的脚本语言,它可以在网页客户端发挥很多作用。在许多实现中,JavaScript 通常用于动态创建 Web 内容,这包括替换 HTML 文本内容。在这篇文章中,我们将重点讨论如何使用 JavaScript 替换 HTML 内容。HTML 替换概述替换 HTML 元素可以通过使用 JavaScript 根据条件更改 HTML 内容
2023-05-14

如何使用JavaScript来改变HTML内容

JavaScript是前端开发中一个非常重要的语言。在JavaScript中,通过操作DOM,我们可以修改HTML文档的内容、样式和结构等。在本篇文章中,我们将介绍如何使用JavaScript来改变HTML内容。一、操作DOMDOM(Document Object Model)是W3C定义的用于访问HTML、XML和SVG文档的编程接口。通过DOM,我们可以在JavaScrip
2023-05-14

linux不解析php文件内容如何解决

本篇内容主要讲解“linux不解析php文件内容如何解决”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“linux不解析php文件内容如何解决”吧!一、问题出现的原因在 Linux 系统中,web
2023-07-06

如何使用xpath解析html字符串

一分耕耘,一分收获!既然打开了这篇文章《如何使用xpath解析html字符串》,就坚持看下去吧!文中内容包含等等知识点...希望你能在阅读本文后,能真真实实学到知识或者帮你解决心中的疑惑,也欢迎大佬或者新人朋友们多留言评论,多给建议!谢谢!
如何使用xpath解析html字符串
2024-04-04

C#如何使用AngleSharp库解析html文档

这篇“C#如何使用AngleSharp库解析html文档”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“C#如何使用Angle
2023-07-02

如何在 Go 中用正则表达式提取 HTML 标签内容?

使用正则表达式提取 html 标签内容的方法:安装 regexp 包(go get golang.org/x/text/regexp)。使用正则表达式语法捕获标签名称和内容,示例:\w+)>(?p.*)\k>。使用 findallstrin
如何在 Go 中用正则表达式提取 HTML 标签内容?
2024-05-15

HTML布局技巧:如何使用overflow属性进行内容溢出控制

在网页设计中,经常会遇到内容溢出的情况。如果在容器中的内容超过了容器的大小,会导致布局混乱,影响用户体验。为了解决这个问题,HTML中提供了overflow属性,可以通过设置不同的属性值来控制内容的溢出情况。本文将介绍如何使用overflo
2023-10-21

如何使用ABAP正则表达式解析HTML标签

小编给大家分享一下如何使用ABAP正则表达式解析HTML标签,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!需求就是我用ABAP的某个函数从数据库读取一个字符串出来,该字符串的内容是一个网页。网页的form里包含了很多隐藏的
2023-06-04

Feign远程调用参数里的内容丢失如何解决

这篇文章主要讲解了“Feign远程调用参数里的内容丢失如何解决”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Feign远程调用参数里的内容丢失如何解决”吧!Feign远程调用参数里面内容丢失
2023-06-29

如何使用HTML和CSS实现一个固定导航栏和内容区域布局

在Web页面设计中,固定导航栏和内容区域布局非常常见,它可以让用户方便地浏览网页内容并进行页面导航。本文将介绍如何使用HTML和CSS来实现这种布局,同时提供具体的代码示例。首先,我们需要用HTML创建基本的页面结构。导航栏通常位于页面的顶
2023-10-21

如何解析Java对象引用与JVM自动内存管理

今天就跟大家聊聊有关如何解析Java对象引用与JVM自动内存管理,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。解析Java对象引用与JVM自动内存管理(转)[@more@]对象引用应
2023-06-03

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录