Python BeautifulSoup 修改 HTML

2023-04-17 00:00:00 python beautifulsoup 修改

如何使用 Python BeautifulSoup 修改 HTML?

安装 BeautifulSoup:

pip install beautifulsoup4

在 Python 中使用 BeautifulSoup 首先要对 HTML 进行解析。使用 BeautifulSoup 可以从 HTML 解析出一个 BeautifulSoup 对象。可以使用以下方式将 HTML 文件读取进来:

from bs4 import BeautifulSoup

#读取 HTML 文件
with open("sample.html") as file:
    soup = BeautifulSoup(file, 'html.parser')

如果需要修改 sample.html 文件中某一个标签内的文本内容,则需找到需要修改的标签。可以使用 findfind_all 方法来查找标签。

find 方法返回第一个匹配的标签,find_all 方法返回所有匹配的标签组成的列表。

简单实例:修改 title

例子中,请先将命名为sample.html的文件保存到程序当前工作目录中。

示例 HTML 文件内容:

<!DOCTYPE html>
<html>
    <head>
        <title>pidancode.com</title>
    </head>
    <body>
        <h1>Hello, BeautifulSoup</h1>
        <p>Welcome to pidancode.com</p>
    </body>
</html>

现在我们需要将 title 的内容修改为 皮蛋编程。代码示例如下:

from bs4 import BeautifulSoup

#读取 HTML 文件
with open("sample.html") as file:
    soup = BeautifulSoup(file, 'html.parser')

#找到 title 标签
title_tag = soup.find("title")

#修改 title 的内容
title_tag.string = "皮蛋编程"

#打印结果
print(soup)

以上代码找到 HTML 中的 title 标签,然后修改其内容为“皮蛋编程”。最后打印结果。

输出:

<!DOCTYPE html>

<html>
<head>
<title>皮蛋编程</title>
</head>
<body>
<h1>Hello, BeautifulSoup</h1>
<p>Welcome to pidancode.com</p>
</body>
</html>

可以看到 title 的内容已经被修改。

简单实例:修改 p 标签

如果需要修改 p 标签内的文本,可以使用与上面相同的方式。

代码示例:

from bs4 import BeautifulSoup

#读取 HTML 文件
with open("sample.html") as file:
    soup = BeautifulSoup(file, 'html.parser')

#找到 p 标签
p_tag = soup.find("p")

#修改 p 标签内的文本
p_tag.string = "Welcome to 皮蛋编程"

#打印结果
print(soup)

输出:

<!DOCTYPE html>

<html>
<head>
<title>pidancode.com</title>
</head>
<body>
<h1>Hello, BeautifulSoup</h1>
<p>Welcome to 皮蛋编程</p>
</body>
</html>

可以看到 p 标签内的文本已经被修改为“Welcome to 皮蛋编程”。

简单实例:添加新标签

如果需要添加新的标签,可以使用 new_tag 方法创建一个新标签,并使用 appendinsert 方法将其添加至 HTML 中。

代码示例:

from bs4 import BeautifulSoup

#读取 HTML 文件
with open("sample.html") as file:
    soup = BeautifulSoup(file, 'html.parser')

#创建新标签
new_tag = soup.new_tag("a")
new_tag.string = "Go to pidancode.com"
new_tag["href"] = "http://pidancode.com"

#将新标签添加到 body 中
soup.body.append(new_tag)

#打印结果
print(soup)

输出:

<!DOCTYPE html>

<html>
<head>
<title>pidancode.com</title>
</head>
<body>
<h1>Hello, BeautifulSoup</h1>
<p>Welcome to 皮蛋编程</p>
<a href="http://pidancode.com">Go to pidancode.com</a>
</body>
</html>

可以看到,新标签 a 已经被成功添加到了 HTML 中。

简单实例:删除标签

如果需要删除某一个标签,可以直接使用 extract 方法,将其从 HTML 中删除。

代码示例:

from bs4 import BeautifulSoup

#读取 HTML 文件
with open("sample.html") as file:
    soup = BeautifulSoup(file, 'html.parser')

#找到需要删除的标签
p_tag = soup.find("p")

#将标签从 HTML 中删除
p_tag.extract()

#打印结果
print(soup)

输出:

<!DOCTYPE html>

<html>
<head>
<title>pidancode.com</title>
</head>
<body>
<h1>Hello, BeautifulSoup</h1>
</body>
</html>

可以看到 p 标签已经被从 HTML 中成功删除。

相关文章