从MediaWiki安装导出文本(MediaWiki标记)

时间:2011-10-13 09:58:24

标签: text export mediawiki mediawiki-api

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

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

article_list = ["Apple", "Banana", "Cupcake"]
for a in article_list:
    get_article(a, a + ".txt")

我的意图是:

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

MediaWiki已经可以实现这一点吗?看起来不像。它还doesn't look like Pywikipediabot has such a script

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

2 个答案:

答案 0 :(得分: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中没有对此的支持,并且尝试使用复杂模板的少数工具失败了。

答案 1 :(得分:1)

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

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