1

我想从本地 MediaWiki 安装中导出许多文章(但不是所有文章)的 MediaWiki 标记。我只想要当前的文章标记,而不是历史记录或其他任何内容,每篇文章都有一个单独的文本文件。我想以编程方式和理想的方式在 MediaWiki 服务器上执行此导出,而不是远程执行。

例如,如果我对 Apple、Banana 和 Cupcake 文章感兴趣,我希望能够:

article_list = [“苹果”、“香蕉”、“纸杯蛋糕”]
对于 article_list 中的一个:
    get_article(a, a + ".txt")

我的意图是:

  • 提取所需文章
  • 将 MediaWiki 标记存储在单独的文本文件中
  • 在单独的程序中解析和处理

MediaWiki 是否已经可以做到这一点?看起来不像。Pywikipediabot 看起来也没有这样的脚本

一个后备方案是能够手动执行此操作(使用导出特殊页面)并轻松地将输出解析为文本文件。是否有现有的工具可以做到这一点?是否有 MediaWiki XML 转储格式的描述?(我找不到一个。)

4

2 回答 2

2

在服务器端,您可以只从数据库中导出。远程,Pywikipediabot 有一个名为的脚本get.py,用于获取给定文章的 wikicode。手动操作也很简单,就像这样(从内存中写入,可能会出现错误):

import wikipedia as pywikibot
site = pywikibot.getSite() # assumes you have a user-config.py with default site/user
article_list = ["Apple", "Banana", "Cupcake"]
for title in article_list:
    page = pywikibot.Page(title, site)
    text = page.get() # handling of not found etc. exceptions omitted
    file = open(title + ".txt", "wt")
    file.write(text)

由于 MediaWiki 的语言没有明确定义,解析/处理它的唯一可靠方法是通过 MediaWiki 本身;Pywikipediabot 不支持此功能,并且尝试执行此操作的少数工具因复杂的模板而失败。

于 2011-10-15T17:22:11.743 回答
1

看起来getText.php是一个内置的服务器端维护脚本,用于导出特定文章的 wikitext。(比查询数据库更容易。)

通过 MediaWiki 的Publishing找到它,它涵盖了从 MediaWiki 导出的所有角度。

于 2011-10-17T06:55:27.260 回答