📜  BeautifulSoup – 从 HTML 中抓取列表(1)

📅  最后修改于: 2023-12-03 15:13:38.663000             🧑  作者: Mango

BeautifulSoup – 从 HTML 中抓取列表

BeautifulSoup 是一个用于从 HTML 和 XML 文件中提取数据的 Python 库。它通过解析原始文件,构建一个 DOM 树,并提供一些有用的方法来搜索、遍历以及修改 DOM 树中的节点,从而帮助我们从复杂的 HTML 中快速抓取数据。本文将介绍如何使用 BeautifulSoup 提取 HTML 中的列表数据。

安装 BeautifulSoup

我们可以使用 pip 安装 BeautifulSoup:

pip install beautifulsoup4
抓取 HTML 列表

假设我们有一个 HTML 页面,其中包含了一个简单的列表:

<!DOCTYPE html>
<html>
<head>
	<meta charset="UTF-8">
	<title>HTML List Example</title>
</head>
<body>
	<h1>HTML List Example</h1>
	<ul id="fruits">
		<li class="apple">Apple</li>
		<li class="banana">Banana</li>
		<li class="cherry">Cherry</li>
		<li class="durian">Durian</li>
		<li class="elderberry">Elderberry</li>
	</ul>
</body>
</html>

我们可以使用 BeautifulSoup 提取这个列表的数据。首先,我们需要导入 BeautifulSoup 和打开这个 HTML 文件:

from bs4 import BeautifulSoup

with open("example.html") as f:
    soup = BeautifulSoup(f, "html.parser")

然后,我们可以使用 BeautifulSoup 的 find() 方法定位到列表的节点:

fruits_list = soup.find("ul", {"id": "fruits"})

这里我们使用了 find() 方法查找了一个 id"fruits"ul 元素,它返回了一个 BeautifulSoup 对象。接下来,我们可以使用 BeautifulSoup 对象的 find_all() 方法提取所有的列表项:

fruits = fruits_list.find_all("li")

这样,我们就得到了一个包含所有列表项的列表。我们可以遍历这个列表并把每个列表项的文本内容打印出来:

for fruit in fruits:
    print(fruit.text)

运行以上代码,输出如下:

Apple
Banana
Cherry
Durian
Elderberry
结论

使用 BeautifulSoup 提取 HTML 中的列表数据十分简单,通过 find()find_all() 方法,我们可以轻松地定位到想要的节点,并提取它们的文本内容或属性。如果你在开发 Web 抓取或数据挖掘应用程序时遇到了需要提取 HTML 内容的问题,推荐你尝试使用 BeautifulSoup。