如何从MediaWiki的所有页面导出文本?

Ale*_*ühl 13 mediawiki export

我有一个MediaWiki运行,它代表德语术语的字典及其对当地方言的翻译.每个页面包含一个术语,其翻译和一些额外的信息.

现在,对于字典的可打印版本,我需要完整导出所有术语及其翻译.由于这是页面内容的摘录,我想我需要以可解析的格式完整导出其最新版本中的所有页面,例如xml或csv.

有没有人这样做或可以指向我的工具?我应该提一下,我没有完全访问服务器,例如没有命令行,但我能够添加MediaWiki扩展或访问MySQL数据库.

miv*_*ivk 5

您可以直接从数据库中导出页面内容。它将是原始 wiki 标记,就像使用 Special:Export 时一样。但是编写导出脚本会更容易,并且您无需确保所有页面都属于某个特殊类别。

下面是一个例子:

SELECT page_title, page_touched, old_text
FROM revision,page,text
WHERE revision.rev_id=page.page_latest
AND text.old_id=revision.rev_text_id;
Run Code Online (Sandbox Code Playgroud)

如果您的 wiki 使用 Postgresql,则表“text”被命名为“pagecontent”,您可能需要指定架构。在这种情况下,相同的查询将是:

SET search_path TO mediawiki,public;

SELECT page_title, page_touched, old_text 
FROM revision,page,pagecontent
WHERE revision.rev_id=page.page_latest
AND pagecontent.old_id=revision.rev_text_id;
Run Code Online (Sandbox Code Playgroud)


Ale*_*ühl 1

我对解决方案并不完全满意,但我最终为所有页面指定了一个通用类别,然后我可以在 Special:Export 框中添加此类别以及所有包含的页面名称。它似乎有效,尽管我不确定当我达到几千页时它是否仍然有效。