Python HTML解析详解

简介: Python HTML解析详解

HTML解析是任何网络爬虫应用的基础,Python中提供了多个解析HTML的库,包括BeautifulSoup、lxml、html5lib等。这里我们将使用BeautifulSoup来演示如何解析HTML。

安装BeautifulSoup

在安装BeautifulSoup之前,需要先安装一个Python包管理器pip。在终端中输入以下命令安装pip。

curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py
sudo python get-pip.py

安装完成pip后,输入以下命令来安装BeautifulSoup。

pip install BeautifulSoup4

解析HTML

我们将使用BeautifulSoup来解析一个简单的HTML文件,其中包含了一个标题和两个链接。我们使用open函数来打开该文件,读取其中的文本。

from bs4 import BeautifulSoup
 
with open('example.html') as f:
    soup = BeautifulSoup(f.read(), 'html.parser')

在这个例子中,使用了open函数来打开名为example.html的文件,并创建了一个BeautifulSoup对象souphtml.parser是一个HTML解析器,它将HTML代码解析成一个树形结构。

读取文件后,我们就可以使用BeautifulSoup的各种方法来遍历和查询HTML文档了。

遍历HTML树形结构

我们可以使用soup对象中的children来获取HTML文档中的所有顶级标签。每个标签都是一个Tag类型的对象,包含了标签名、属性和子节点等信息。

for child in soup.children:
    print(child)

输出:

<html>
<head>
<title>Example</title>
</head>
<body>
<a href="https://www.google.com">Google</a>
<a href="https://www.bing.com">Bing</a>
</body>
</html>

我们也可以使用soup对象中的descendants来遍历HTML文档中的所有标签,包括嵌套的标签。

for tag in soup.descendants:
    print(tag)

输出:

<html>
<head>
<title>Example</title>
</head>
<body>
<a href="https://www.google.com">Google</a>
Google
<a href="https://www.bing.com">Bing</a>
Bing
</body>
</html>

查询HTML文档

我们可以使用soup对象中的各种方法来查询HTML文档中的标签和内容。

1.查询标签

使用soup.find_all方法来查询一个HTML文档中所有的标签,该方法返回一个列表。

links = soup.find_all('a')
print(links)

输出:

[<a href="https://www.google.com">Google</a>, <a href="https://www.bing.com">Bing</a>]

2.查询属性

如果我们只想查询标签中的某一个属性,可以使用tag.get方法来获取该属性的值。

for link in links:
    url = link.get('href')
    print(url)

输出:

https://www.google.com
https://www.bing.com

3.查询文本

使用tag.string可以获取一个标签中的文本内容。

for link in links:
    text = link.string
    print(text)

输出:

Google
Bing

修改HTML文档

如果我们需要修改HTML文档中的内容,可以直接修改Tag对象的属性或文本内容。例如:

link = soup.find('a')
link['href'] = 'https://www.yahoo.com'
link.string = 'Yahoo'

该代码将第一个链接的href属性修改为https://www.yahoo.com,并将链接文本修改为Yahoo

修改完成后,我们可以使用soup对象的prettify方法将修改后的HTML文档格式化输出。该方法将自动缩进和换行,使HTML文档更易于阅读。

html = soup.prettify('utf-8')
with open('modified.html', 'wb') as f:
    f.write(html)

使用以上代码,我们可以将修改后的HTML文档保存


相关文章
|
5天前
|
XML 前端开发 数据格式
BeautifulSoup 是一个 Python 库,用于从 HTML 和 XML 文件中提取数据
【5月更文挑战第10天】BeautifulSoup 是 Python 的一个库,用于解析 HTML 和 XML 文件,即使在格式不规范的情况下也能有效工作。通过创建 BeautifulSoup 对象并使用方法如 find_all 和 get,可以方便地提取和查找文档中的信息。以下是一段示例代码,展示如何安装库、解析 HTML 数据以及打印段落、链接和特定类名的元素。BeautifulSoup 还支持更复杂的查询和文档修改功能。
23 1
|
2天前
|
存储 Java 程序员
【Python 的内存管理机制专栏】深入解析 Python 的内存管理机制:从变量到垃圾回收
【5月更文挑战第18天】Python内存管理关乎程序性能与稳定性,包括变量存储和垃圾回收。变量存储时,如`x = 10`,`x`指向内存中值的引用。垃圾回收通过引用计数自动回收无引用对象,防止内存泄漏。了解此机制可优化内存使用,避免循环引用等问题,提升程序效率和稳定性。深入学习内存管理对成为优秀Python程序员至关重要。
【Python 的内存管理机制专栏】深入解析 Python 的内存管理机制:从变量到垃圾回收
|
3天前
|
iOS开发 Python
mac:python安装路径,带你全面解析Python框架体系架构view篇
mac:python安装路径,带你全面解析Python框架体系架构view篇
|
5天前
|
前端开发 文件存储 Python
python之xhtml2pdf: HTML转PDF工具示例详解
python之xhtml2pdf: HTML转PDF工具示例详解
13 0
|
5天前
|
数据采集 数据挖掘 Python
Python之html2text: 将HTML转换为Markdown 文档示例详解
Python之html2text: 将HTML转换为Markdown 文档示例详解
10 0
|
5天前
|
XML 存储 数据格式
python path解析基础
python path解析基础
17 0
|
5天前
|
数据采集 XML 数据可视化
如何用Beautiful Soup解析HTML内容
如何用Beautiful Soup解析HTML内容
15 1
|
JavaScript 前端开发 Python

推荐镜像

更多