Python模块:BeautifulSoup

一、BeautifulSoup简介

BeautifulSoup是一个Python库,主要用于解析HTML和XML文档。它可以将复杂的HTML和XML文档转换为树形结构,方便我们查询、遍历和修改文档内容。BeautifulSoup是基于Python标准库中的HTML解析器实现的,因此在使用前需要先安装。

安装方法:


pip install beautifulsoup4

导入方法:


from bs4 import BeautifulSoup

二、BeautifulSoup的基本使用

在使用BeautifulSoup解析HTML或XML文档之前,需要先将文档转为BeautifulSoup对象。


html_doc = """<html><head><title>这是标题</title></head>
                <body><p class="content">这是段落1</p><p>这是段落2</p></body>
              </html>"""
soup = BeautifulSoup(html_doc, 'html.parser')

通过这样的方式,我们就可以将HTML代码解析成为一个树形结构,方便我们查询其中的元素,就像访问一个树形结构的节点一样。

三、选择器

在查询HTML或XML文档的时候,我们需要使用选择器。BeautifulSoup支持多种选择器类型,如标签名、CSS选择器、正则表达式等。

1. 标签选择器

标签选择器是指选择HTML或XML文档中指定标签的元素。使用方法如下:


html_doc = """<html><head><title>这是标题</title></head>
                <body><p class="content">这是段落1</p><p>这是段落2</p></body>
              </html>"""
soup = BeautifulSoup(html_doc, 'html.parser')
p_tag = soup.p
print(p_tag)

输出结果:

<p class="content">这是段落1</p>

2. CSS选择器

除了标签选择器之外,还可以使用CSS选择器进行选择。使用方法如下:


html_doc = """<html><head><title>这是标题</title></head>
                <body><p class="content">这是段落1</p><p class="content">这是段落2</p></body>
              </html>"""
soup = BeautifulSoup(html_doc, 'html.parser')
p_tags = soup.select(".content")
print(p_tags)

输出结果:

[<p class="content">这是段落1</p>, <p class="content">这是段落2</p>]

3. 正则表达式选择器

如果需要根据正则表达式选择元素,可以使用find_all()方法,传入一个正则表达式,如下所示:


import re
html_doc = """<html><head><title>这是标题</title></head>
                <body><p class="content">这是段落1</p><p class="content">这是段落2</p></body>
              </html>"""
soup = BeautifulSoup(html_doc, 'html.parser')
p_tags = soup.find_all(re.compile('^p'))
print(p_tags)

输出结果:

[<p class="content">这是段落1</p>, <p class="content">这是段落2</p>]

四、元素内容和属性

获取元素内容和属性可以使用string和attrs属性。

1. 获取元素内容

使用string属性可以获取元素的文本内容。


html_doc = """<html><head><title>这是标题</title></head>
                <body><p class="content">这是段落1</p><p class="content">这是段落2</p></body>
              </html>"""
soup = BeautifulSoup(html_doc, 'html.parser')
p_tag = soup.p
print(p_tag.string)

输出结果:

这是段落1

2. 获取元素属性

使用attrs属性可以获取元素的属性。


html_doc = """<html><head><title>这是标题</title></head>
                <body><p class="content">这是段落1</p><p class="content">这是段落2</p></body>
              </html>"""
soup = BeautifulSoup(html_doc, 'html.parser')
p_tag = soup.p
print(p_tag.attrs)

输出结果:

{'class': ['content']}

五、修改元素

通过修改元素,我们可以改变文档内容。例如,我们可以在元素结构中添加、删除、修改文本和属性。

1. 添加元素

使用insert()方法可以在指定位置添加元素。


html_doc = """<html><head><title>这是标题</title></head>
                <body><p class="content">这是段落1</p></body>
              </html>"""
soup = BeautifulSoup(html_doc, 'html.parser')
new_tag = soup.new_tag('p')
new_tag.string = '这是新增的段落'
soup.body.insert(1, new_tag)
print(soup.prettify())

输出结果:

<html>
 <head>
  <title>
   这是标题
  </title>
 </head>
 <body>
  <p class="content">
   这是段落1
  </p>
  <p>
   这是新增的段落
  </p>
 </body>
</html>

2. 删除元素

使用decompose()方法可以删除指定元素。


html_doc = """<html><head><title>这是标题</title></head>
                <body><p class="content">这是段落1</p></body>
              </html>"""
soup = BeautifulSoup(html_doc, 'html.parser')
p_tag = soup.p
p_tag.decompose()
print(soup.prettify())

输出结果:

<html>
 <head>
  <title>
   这是标题
  </title>
 </head>
 <body>
 </body>
</html>

3. 修改元素

修改元素的文本内容可以通过string属性实现,修改元素属性可以通过修改attrs属性实现。


html_doc = """<html><head><title>这是标题</title></head>
                <body><p class="content">这是段落1</p></body>
              </html>"""
soup = BeautifulSoup(html_doc, 'html.parser')
p_tag = soup.p
p_tag.string = '这是修改后的内容'
p_tag['class'] = ['new-class']
print(soup.prettify())

输出结果:

<html>
 <head>
  <title>
   这是标题
  </title>
 </head>
 <body>
  <p class="new-class">
   这是修改后的内容
  </p>
 </body>
</html>

原创文章,作者:小蓝,如若转载,请注明出处:https://www.506064.com/n/158914.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
小蓝小蓝
上一篇 2024-11-19 18:52
下一篇 2024-11-19 18:56

相关推荐

  • Python周杰伦代码用法介绍

    本文将从多个方面对Python周杰伦代码进行详细的阐述。 一、代码介绍 from urllib.request import urlopen from bs4 import Bea…

    编程 2025-04-29
  • 如何查看Anaconda中Python路径

    对Anaconda中Python路径即conda环境的查看进行详细的阐述。 一、使用命令行查看 1、在Windows系统中,可以使用命令提示符(cmd)或者Anaconda Pro…

    编程 2025-04-29
  • Python列表中负数的个数

    Python列表是一个有序的集合,可以存储多个不同类型的元素。而负数是指小于0的整数。在Python列表中,我们想要找到负数的个数,可以通过以下几个方面进行实现。 一、使用循环遍历…

    编程 2025-04-29
  • Python计算阳历日期对应周几

    本文介绍如何通过Python计算任意阳历日期对应周几。 一、获取日期 获取日期可以通过Python内置的模块datetime实现,示例代码如下: from datetime imp…

    编程 2025-04-29
  • Python中引入上一级目录中函数

    Python中经常需要调用其他文件夹中的模块或函数,其中一个常见的操作是引入上一级目录中的函数。在此,我们将从多个角度详细解释如何在Python中引入上一级目录的函数。 一、加入环…

    编程 2025-04-29
  • Python清华镜像下载

    Python清华镜像是一个高质量的Python开发资源镜像站,提供了Python及其相关的开发工具、框架和文档的下载服务。本文将从以下几个方面对Python清华镜像下载进行详细的阐…

    编程 2025-04-29
  • Python程序需要编译才能执行

    Python 被广泛应用于数据分析、人工智能、科学计算等领域,它的灵活性和简单易学的性质使得越来越多的人喜欢使用 Python 进行编程。然而,在 Python 中程序执行的方式不…

    编程 2025-04-29
  • Python字典去重复工具

    使用Python语言编写字典去重复工具,可帮助用户快速去重复。 一、字典去重复工具的需求 在使用Python编写程序时,我们经常需要处理数据文件,其中包含了大量的重复数据。为了方便…

    编程 2025-04-29
  • python强行终止程序快捷键

    本文将从多个方面对python强行终止程序快捷键进行详细阐述,并提供相应代码示例。 一、Ctrl+C快捷键 Ctrl+C快捷键是在终端中经常用来强行终止运行的程序。当你在终端中运行…

    编程 2025-04-29
  • 蝴蝶优化算法Python版

    蝴蝶优化算法是一种基于仿生学的优化算法,模仿自然界中的蝴蝶进行搜索。它可以应用于多个领域的优化问题,包括数学优化、工程问题、机器学习等。本文将从多个方面对蝴蝶优化算法Python版…

    编程 2025-04-29

发表回复

登录后才能评论