1

以 XML 格式下载维基百科的转储文件很容易。然而,文章的内容是用维基文本编写的,它有一个模板系统。要从这些转储中提取干净的全文,有必要扩展这些模板。Wikipedia提供了一个 API来执行此操作,但它不适合扩展整个转储。可以找到几个脚本来处理 wikitext,例如这个用 python 编写的脚本,但它们似乎都已过时或根本不处理模板。解决此问题的另一种方法是在计算机上运行 Wikimedia 并使用 API:Expandtemplates,但这似乎是一个相当麻烦的解决方案。最后,HTML 转储也存在,但我更喜欢使用扩展的 wikitexts,因为它可以更轻松地处理 wikilinks、表格、部分等。

我的目标是提取干净的文本,同时保留维基链接并丢弃复杂的模板,例如信息框。你知道如何解决这个模板扩展问题吗?

4

2 回答 2

1

我做了一个解决方案,使用Kiwix从 Wikipedia 获取干净的文本。Kiwix 生成的 HTML 对于我的目的来说似乎很容易解析。您可以在此处查看代码,但请注意它目前不可靠。

此外,您可以下载此解决方案生成的转储文件(英语法语)。

于 2021-03-25T13:57:21.047 回答
0

我相信https://github.com/tatuylonen/wikitextprocessor/可以满足您的要求:

这是一个 Python 包,用于处理维基词典、维基百科等的维基媒体转储文件,用于数据提取、错误检查、离线转换为 HTML 或其他格式以及其他用途。主要特点包括:

  • 解析转储文件,包括对并行处理页面的内置支持
  • 将整个页面转换为解析树的 Wikitext 语法解析器
  • 从转储文件中提取模板定义和 Scribunto Lua 模块定义
  • 扩展选定的模板或所有模板,并在合理可能的解析之前启发式地识别需要扩展的模板(例如,发出表格开始和结束标签的模板)
  • 处理和扩展 wikitext 解析器功能
  • 处理、执行和扩展 Scribunto Lua 模块(它们非常广泛地用于,例如,维基词典,例如用于为多种语言生成 IPA 字符串)
  • 用于在解析之前解析整个页面结构但随后在页面的某些部分扩展模板的应用程序的部分页面的受控扩展
  • 在扩展模板参数时从模板参数中捕获信息,因为模板参数通常包含扩展内容中不可用的有用信息。
于 2021-04-16T01:08:14.903 回答