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

发布于 2024-11-25 10:45:43 字数 249 浏览 4 评论 0原文

我正在运行一个 MediaWiki,它代表德语术语词典及其对当地方言的翻译。每页包含一个术语、其翻译和许多附加信息。

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

有人这样做过或者可以给我指出一个工具吗? 我应该提到,我没有对服务器的完全访问权限,例如没有命令行,但我可以添加 MediaWiki 扩展或访问 MySQL 数据库。

I have a MediaWiki running which represents a dictionary of German terms and their translation to a local dialect. Each page holds one term, its translation and a number of additional infos.

Now, for a printable version of the dictionary, I need a full export of all terms and their translation. Since this is an extract of a page's content, I guess I need a complete export of all pages in their newest version in a parsable format, e.g. xml or csv.

Has anyone done that or can point me to a tool?
I should mention, that I don't have full access to the server, e.g. no command line, but I am able to add MediaWiki extensions or access the MySQL database.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(7

你曾走过我的故事 2024-12-02 10:45:43

您可以直接从数据库导出页面内容。它将是原始 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;

如果您的 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;

You can export the page content directly from the database. It will be the raw wiki markup, as when using Special:Export. But it will be easier to script the export, and you don't need to make sure all your pages are in some special category.

Here is an example:

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;

If your wiki uses Postgresql, the table "text" is named "pagecontent", and you may need to specify the schema. In that case, the same query would be:

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;
雨的味道风的声音 2024-12-02 10:45:43

这对我来说非常有效。请注意,我将输出重定向到文件 backup.xml。从 Windows 命令处理器 (CMD.exe) 提示符:

cd \PATH_TO_YOUR_WIKI_INSTALLATION\maintenance
\PATH_OF_PHP.EXE\php dumpBackup.php --full > backup.xml

This worked very well for me. Notice I redirected the output to the file backup.xml. From a Windows Command Processor (CMD.exe) prompt:

cd \PATH_TO_YOUR_WIKI_INSTALLATION\maintenance
\PATH_OF_PHP.EXE\php dumpBackup.php --full > backup.xml
情仇皆在手 2024-12-02 10:45:43

出口

cd maintenance
php5 ./dumpBackup.php --current > /path/wiki_dump.xml

进口

cd maintenance
php5 ./importDump.php < /path/wiki_dump.xml

Export

cd maintenance
php5 ./dumpBackup.php --current > /path/wiki_dump.xml

Import

cd maintenance
php5 ./importDump.php < /path/wiki_dump.xml
森林很绿却致人迷途 2024-12-02 10:45:43

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

I'm not completely satisfied with the solution, but I ended up specifying a common category for all pages and then I can add this category and all of the containing page names in the Special:Export box. It seems to work, allthough I'm not sure if it will still work when I reach a few thousand pages.

删除会话 2024-12-02 10:45:43

看起来并不简单。 http://meta.wikimedia.org/wiki/Help:Export 可能有帮助,但是可能不会。

如果页面的结构都相同,您也许可以使用 Scrapy 之类的内容编写网络抓取工具

It looks less than simple. http://meta.wikimedia.org/wiki/Help:Export might help, but probably not.

If the pages are all structured in the same way, you might be able to write a web scraper with something like Scrapy

绝不放开 2024-12-02 10:45:43

您可以使用特殊页面Special:Export导出为XML; 这是维基百科的版本

如果您希望最终获得人类可读(例如 PDF)形式,您也可以考虑 Extension:Collection

You can use the special page, Special:Export to export to XML; here is Wikipedia's version.

You might also consider Extension:Collection if you want it eventually human readable (e.g. PDF) form.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文