BeautifulSoup 仅提取顶级标签[重复]

python

1个回答

写回答

Python
Python

使用Python的BeautifulSoup库,我们可以轻松地从HTML文档中提取所需的标签。在本文中,我们将重点介绍如何仅提取顶级标签,并 。

首先,让我们使用以下代码来解析HTML文档并创建BeautifulSoup对象:

Python

from bs4 import BeautifulSoup

# HTML文档

html_doc = """

<html>

<head>

<title>示例页面</title>

</head>

<body>

<h1>欢迎使用BeautifulSoup</h1>

BeautifulSoup是一个强大的Python库,用于从HTML和XML文档中提取数据。

<div>

<h2>顶级标签1</h2>

<img src="https://img.izhida.com/topic/3501bb093d363810b671059b9cfed3f8.jpg" alt="XML"><br>XML

这是顶级标签1的内容。

</div>

<div>

<h2>顶级标签2</h2>

这是顶级标签2的内容。

</div>

</body>

</html>

"""

# 创建BeautifulSoup对象

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

以上代码中,我们使用html.parser解析器创建了一个BeautifulSoup对象,并将HTML文档作为参数传递给它。

接下来,让我们使用以下代码来提取顶级标签:

Python

# 提取顶级标签

top_level_tags = soup.find_all(['html', 'head', 'body'])

# 输出顶级标签

for tag in top_level_tags:

print(tag)

以上代码中,我们使用find_all()方法和一个包含顶级标签的列表作为参数来提取顶级标签。然后,我们遍历提取到的标签并将其打印出来。

现在,让我们 ,其中包含提取到的顶级标签的内容:

Python

# 文章

article = ""

for tag in top_level_tags:

if tag.name == 'h1':

article += "<strong>" + tag.string + "</strong>\n\n"

elif tag.name == 'p':

article += tag.string + "\n\n"

elif tag.name == 'div':

h2_tag = tag.find('h2')

if h2_tag:

article += "<strong>" + h2_tag.string + "</strong>\n\n"

p_tag = tag.find('p')

if p_tag:

article += p_tag.string + "\n\n"

# 输出文章

print(article)

以上代码中,我们遍历提取到的顶级标签,并根据标签的类型将其内容添加到文章中。如果标签是h1,我们将其内容添加到文章中,并在标题外部添加标签以强调它。如果标签是p,我们将其内容直接添加到文章中。如果标签是div,我们将查找其中的h2p标签,并按照相同的方式将它们的内容添加到文章中。

最后,让我们将文章分段,并在中间段落中添加标题:

Python

# 分段文章并添加标题

paragraphs = article.split('\n\n')

# 在中间段落添加标题

for i in range(1, len(paragraphs), 2):

paragraphs[i] = "<strong>" + paragraphs[i] + "</strong>"

# 输出分段后的文章

for paragraph in paragraphs:

print(paragraph)

以上代码中,我们使用split()方法将文章分成段落,并将结果存储在一个列表中。然后,我们使用一个循环遍历列表中的每个奇数索引,并在该段落中添加标签以创建一个标题。

最后,我们遍历分段后的文章并将其打印出来,每个段落占一行。

通过上述步骤,我们成功使用BeautifulSoup提取了顶级标签,并 了一篇文章。

举报有用(4分享收藏

Copyright © 2025 IZhiDa.com All Rights Reserved.

知答 版权所有 粤ICP备2023042255号