在本文中,您将学习如何从 Wikipedia 抓取表格,使用 Python 将非结构化网页内容转换为结构化格式。本指南涵盖了从理解维基百科表格的结构到利用 Python 库进行数据提取的基本知识,是高效、负责任地网页抓取维基百科表格的综合教程。

如果您想 抓取维基百科 数据,请参阅我们的指南'如何抓取维基百科' 其中包括提取页面标题、图像等数据。

在本指南中,我们将引导您完成有关网络抓取维基百科表的简单教程。

为了网络抓取维基百科表,我们将利用 BeautifulSoup 以及 Crawlbase 库来获取 HTML 内容。

维基百科表格的结构

维基百科表格是使用 HTML 和维基文本的组合构建的,允许视觉和文本编辑。要确定适合抓取的表,您可以查找可排序列等功能,这些功能可以按升序或降序排列。这 基本组件 维基百科表格包括表格开始标记、标题、行、标题和数据单元格。这些元素是使用定义的 具体符号 在维基文本中,例如“|”用于单元格分隔符,“—”用于行分隔符。 “|+”符号专门用于表格标题,而“!”表示表格标题。

维基百科上的表格可以使用 CSS 设置样式。类、样式、范围、行跨度和列跨度等属性可增强视觉呈现和数据组织,确保表格不仅信息丰富,而且易于访问。推荐使用 CSS 类 用于样式而不是内联样式,以保持不同表格之间的一致性和清晰度。此外, “维基表”类 通常用于将标准样式应用于表格,使它们在不同文章中在视觉上保持一致。

了解与表相关的元数据对于有效的数据抓取至关重要。维基百科上类似关系数据库的结构中的每个表都由行和列组成,每行由主键标识。元数据可能包括对表本身或特定列中的值的约束,这有助于维护数据的完整性和相关性。什么时候 抓取维基百科,必须考虑这些结构和元数据才能准确地从维基百科中抓取表格。

如何从维基百科中抓取表格

第 1 步:导入库

我们将导入从维基百科抓取表格所需的库。其中包括用于解析 HTML 的 BeautifulSoup、用于数据操作的 pandas 以及用于发出获取 HTML 内容请求的 Crawlbase 库中的 CrawlingAPI 类。

1
2
3
 bs4 进口 美丽汤
进口 大熊猫 as pd
爬行基地 进口 抓取API

第 2 步:从 Wikipedia 页面抓取表格

要使用 python 从维基百科的某个部分中抓取表格,我们需要检查包含该表格的网页的 HTML 结构。这可以通过右键单击表格,从上下文菜单中选择“检查”来完成。此操作将显示页面的 HTML 内容,使我们能够识别存储数据的标签。通常,HTML 中的表格数据包含在 <table> 标签。

让我们瞄准 这个URL 其中包含我们要抓取的表。一旦我们确定了 URL,我们就可以继续从 HTML 内容中提取表数据。

如何从维基百科中抓取表格

第3步:获取维基百科表数据

接下来,我们将初始化 CrawlingAPI 以从维基百科页面获取表数据。我们将此数据传递给 scrape_data 函数以创建一个 BeautifulSoup 对象。然后,我们将使用 select_one() 方法来提取相关信息,在本例中是 <table> 标签。由于维基百科页面可能包含多个表,因此我们需要通过传递“class”或“id”属性来指定表 <table> 标签。

您可以复制并粘贴以下完整代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
 bs4 进口 美丽汤
进口 大熊猫 as pd
爬行基地 进口 抓取API

DEF (page_url、api_token):
尝试:
api = 爬行API({'令牌': api_token})

# 获取页面内容
响应 = api.get(page_url)

# 检查请求是否成功
if 回复['状态代码'] == 200:
# 抓取数据
打印(f“200 响应”)
回报 scrap_data(响应)
其他:
打印(f“错误: {回复}")
回报 不包含
特殊课程 as e:
打印(f"爬取时发生错误: {e}")
回报 不包含

DEF 抓取数据(响应):
尝试:
# 使用 Beautiful Soup 解析 HTML 内容
汤 = BeautifulSoup(响应['身体'], 'html.parser')

# 查找包含所需数据的表
表=汤.select_one('.wikitable')

# 从找到的第一个表中提取数据
if 表:
打印(“桌子找到了。”)
# 将表读入DataFrame
df = pd.read_html(STR(桌子))
打印(df)

# 检查是否有数据被提取
if df:
# 将 DataFrame 保存到 CSV 文件
df[0].to_csv('维基百科.csv', 索引=)
打印(f“导出到wikipedia.csv的表数据”)
回报 df
其他:
打印(“表中没有找到数据。”)
回报 不包含
其他:
打印(“没有找到桌子。”)
回报 不包含
特殊课程 as e:
打印(f"数据提取过程中发生错误: {e}")
回报 不包含

if __名字__ == “__主要的__”:
# 指定要抓取的维基百科页面 URL
页面网址 = 'https://en.wikipedia.org/wiki/List_of_countries_and_dependency_by_area'
抓取基础令牌 = '爬行基地令牌'

# 调用爬取函数
抓取(页面网址,抓取基础令牌)

步骤 4:执行代码以保存在 CSV 文件中

一旦成功从维基百科表中提取数据,以结构化格式存储它就至关重要。根据您的项目要求,您可以选择以 JSON、CSV 格式存储数据,或直接存储到数据库中。这种灵活性允许数据用于各种应用,从数据分析到 机器学习网络抓取项目.

使用以下命令再次运行代码:

1
python wikipedia_scraper.py

代码结构将允许我们从指定的维基百科页面抓取表格,使用 BeautifulSoup 对其进行处理,并将提取的数据保存到 CSV 文件中以供进一步分析。请参阅下面的示例输出:

从维基百科表中抓取数据

结论

在这篇关于网页抓取维基百科表格的文章中,我们一起经历了从了解网页抓取的基本前提,特别是使用 Python 从维基百科提取表格,到设置您的环境,最后将抓取的数据转换为结构化且干净的格式适合分析。通过使用 BeautifulSoup、Requests 和 Pandas 等功能强大的 Python 库,我们成功地从 Wikipedia 中抓取了一张表格。

无论您是热衷于深入研究数据集的数据爱好者,还是希望增强分析能力的专业人士,您在这里磨练的技能都将成为坚实的基础。为了更深入地探索这个迷人的世界, 探索类似主题的更具启发性的博客 这可以加深您的理解并在您的项目中激发更多创造力。以下是您可能感兴趣的一些书面教程:

网页抓取维基百科

如何抓取谷歌学术搜索结果

如何抓取 Quora

如何使用 ChatGPT 抓取网站

剧作家网络抓取

如何抓取 TikTok 评论

常见问题

  1. 如何从维基百科页面中提取表格?

要从维基百科中提取表格,只需导航到包含您感兴趣的表格的维基百科页面。将 URL 输入到 Crawlbase 抓取 API 的相应字段中,然后单击“发送”。然后,您可以将表数据复制到剪贴板或将其下载为 CSV 文件。

  1. 是否允许从维基百科抓取数据供我自己使用?

是的,通常允许使用 BeautifulSoup 和 python 来抓取维基百科表格,因为许多用户会重复使用维基百科的内容。如果您计划在自己的出版物(例如书籍、文章、网站等)中使用维基百科的文本材料,则可以在遵守维基百科文本可用的许可之一的条件下这样做。

  1. 直接从维基百科复制表格的方法是什么?

要直接从维基百科复制表格,只需通过单击并将鼠标拖动到表格上来选择该表格,然后右键单击并选择“复制”。然后,您可以使用“粘贴”选项将其粘贴到文档或电子表格应用程序中。