我想从本地MediaWiki安装中导出大量文章(但不是all articles)的MediaWiki标记。我只想要当前的文章标记,而不是历史或其他任何内容,每篇文章都有一个单独的文本文件。我想以编程方式和理想情况在MediaWiki服务器上执行此导出,而不是远程执行。
例如,如果我对Apple,Banana和Cupcake的文章感兴趣,我希望能够:
article_list = ["Apple", "Banana", "Cupcake"] for a in article_list: get_article(a, a + ".txt")
我的意图是:
MediaWiki已经可以实现这一点吗?看起来不像。它还doesn't look like Pywikipediabot has such a script。
后备将是能够手动执行此操作(使用“导出特殊页面”)并轻松地将输出解析为文本文件。有现成的工具吗?是否有MediaWiki XML转储格式的描述? (我找不到一个。)
答案 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导出的所有角度。