📅  最后修改于: 2023-12-03 15:39:51.205000             🧑  作者: Mango
在某些情况下,我们可能需要从大型文本或 HTML 文件中提取目录,以方便用户更快地找到自己感兴趣的内容。这篇文章将介绍一些 Python 库和代码来提取目录。
Beautiful Soup 是一个 Python 包,用于从 HTML 和 XML 中提取数据。它能够构建一个解析树来遍历 HTML/XML 文档,从而帮助我们查找和提取指定元素。
首先,我们需要安装 Beautiful Soup:
pip install beautifulsoup4
假设我们有一个名为 example.html
的 HTML 文件,它看起来像这样:
<!DOCTYPE html>
<html>
<head>
<title>Example HTML</title>
</head>
<body>
<h1>Heading 1</h1>
<p>Paragraph 1</p>
<h2>Sub-heading 1</h2>
<p>Paragraph 2</p>
<h2>Sub-heading 2</h2>
<p>Paragraph 3</p>
<h3>Sub-sub-heading 1</h3>
<p>Paragraph 4</p>
<h3>Sub-sub-heading 2</h3>
<p>Paragraph 5</p>
<h1>Heading 2</h1>
<p>Paragraph 6</p>
</body>
</html>
现在,让我们编写 Python 代码来提取该文件的目录:
from bs4 import BeautifulSoup
with open("example.html") as fp:
soup = BeautifulSoup(fp, 'html.parser')
toc = []
# find all headings
for heading in soup.find_all(['h1', 'h2', 'h3']):
toc.append((heading.name, heading.text))
# print table of contents
for level, title in toc:
if level == 'h1':
print(title)
elif level == 'h2':
print(' ' + title)
elif level == 'h3':
print(' ' + title)
输出将是:
Heading 1
Sub-heading 1
Sub-heading 2
Sub-sub-heading 1
Sub-sub-heading 2
Heading 2
我们首先使用 BeautifulSoup
库打开 example.html
文件,并生成一个 BeautifulSoup 对象 soup
。然后,我们遍历整个文档,查找所有的标题元素 (h1
、h2
和 h3
)。对于每个找到的标题,我们将其级别和标题文字添加到 toc
列表中。最后,我们遍历 toc 列表并打印输出。
html_toc 是一个小巧的 Python 库,它提供了一种简单的方法来生成文档目录。
首先,我们需要安装 html_toc 库:
pip install html_toc
现在,假设我们有一个名为 example.html
的 HTML 文件,我们可以使用以下代码来提取它的目录:
from html_toc import get_html_toc
with open('example.html') as fp:
html = fp.read()
toc_html = get_html_toc(html)
print(toc_html)
输出将是:
<div class="toc">
<ul>
<li><a href="#heading-1">Heading 1</a>
<ul>
<li><a href="#sub-heading-1">Sub-heading 1</a></li>
<li><a href="#sub-heading-2">Sub-heading 2</a>
<ul>
<li><a href="#sub-sub-heading-1">Sub-sub-heading 1</a></li>
<li><a href="#sub-sub-heading-2">Sub-sub-heading 2</a></li>
</ul>
</li>
</ul>
</li>
<li><a href="#heading-2">Heading 2</a></li>
</ul>
</div>
我们首先使用 html_toc
库中的 get_html_toc
函数获取目录的 HTML。然后,我们可以将其嵌入到 HTML 页面中以提供导航条。如果您需要更多自定义选项,请查看 html_toc 的文档。
提取目录是一项非常有用的任务,可以使用户更轻松地浏览页面。Python 常用的库和代码让这项任务变得非常简单和快捷。使用本文介绍的技术,您可以在不到几行代码的情况下轻松地提取目录。