📜  如何在Python中提取维基百科数据?(1)

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

如何在 Python 中提取维基百科数据?

维基百科是一个包含大量有价值数据的开放式知识库,许多研究人员和数据科学家需要从中提取数据进行分析和处理。Python 作为一种流行的编程语言,拥有许多强大的库和工具,可用于从维基百科中提取和处理数据。

本篇文章将介绍如何使用 Python 和相关库从维基百科中提取数据。主要内容包括:

  1. 使用基于 API 的维基百科工具

  2. 使用现成的 Python 库进行数据提取

  3. 使用维基百科的数据下载

使用基于 API 的维基百科工具

维基百科提供了一个基于 API 的工具,可用于从其数据库中读取数据。API(应用程序编程接口)是一种用于应用程序之间交换数据和协作的协议。维基百科的 API 可以用于从维基百科提取数据,例如页面内容、页面历史记录、页面元数据等。

使用基于 API 的维基百科工具时,可以使用 Python 的 requests 包或其他 HTTP 客户端库发送 HTTP 请求,然后解析返回的 JSON 或 XML 数据。以下是使用 requests 库获取页面内容的示例代码:

import requests

lang = 'en'
page_title = 'Python (programming language)'
api_url = f'https://{lang}.wikipedia.org/w/api.php'
params = {
    'action': 'query',
    'titles': page_title,
    'prop': 'revisions',
    'rvprop': 'content',
    'format': 'json'
}

response = requests.get(api_url, params=params)
data = response.json()

此代码将获取 Python 编程语言页面的内容,并将其存储在变量 data 中。您可以在 params 参数中修改一些选项,例如选择您要检索的元数据类型、使用的语言等。

使用现成的 Python 库进行数据提取

有许多现成的 Python 库可用于从维基百科中提取和处理数据。其中,最受欢迎的是:

  1. wikipedia:https://pypi.org/project/wikipedia/

  2. wikitextparser:https://pypi.org/project/wikitextparser/

wikipedia 已经实现了与维基百科 API 的互动,您只需在代码中指定页码,就可以获取页面的 HTML 标记,并将其转换为纯文本。以下是使用 wikipedia 库获取 Python 编程语言页面内容的示例代码:

import wikipedia

lang = 'en'
page_title = 'Python (programming language)'

wikipedia.set_lang(lang)
page = wikipedia.page(page_title)

print(page.content)

wikitextparser 是一个更高级的库,并用于解析和处理维基文本。该库提供了一种方式来解析维基文本,并基于解析结果构建结构化对象。以下是使用 wikitextparser 获取 Python 编程语言页面内容的示例代码:

import requests
from wikitextparser import parse

lang = 'en'
page_title = 'Python (programming language)'
api_url = f'https://{lang}.wikipedia.org/w/api.php'
params = {
    'action': 'query',
    'titles': page_title,
    'prop': 'revisions',
    'rvprop': 'content',
    'format': 'json'
}

response = requests.get(api_url, params=params)
data = response.json()
text = data['query']['pages'][0]['revisions'][0]['*']
parsed_text = parse(text)

print(parsed_text.get_sections()[0].get_string())

此代码将获取 Python 编程语言页面的内容,并将其解析为维基文本对象。然后,我们可以使用这些对象的方法获取页面的标题、段落、列表、链接等元素。

使用维基百科的数据下载

最后,维基百科提供了完整的页面、页面历史记录和元数据下载。您可以选择所需的数据,并从以下网址下载:

  1. 页面数据:https://dumps.wikimedia.org/

  2. 元数据:https://dumps.wikimedia.org/other/mediawiki_history/

这些数据以 XML 格式提供,您需要使用专门的库或工具来处理它们。例如,您可以使用 WikiExtractor 来提取维基百科的页面内容,并将其转换为文本格式。

以上是使用 Python 提取维基百科数据的主要方法。无论您选择哪种方法,都需要花费一些时间来了解维基百科的 API 和文本格式。但是,这些都是具有广泛用途的技能,值得您花费时间学习。