如何从 MediaWiki 的所有页面导出文本?
我正在运行一个 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 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(7)
您可以直接从数据库导出页面内容。它将是原始 wiki 标记,就像使用 Special:Export 时一样。但是编写导出脚本会更容易,并且您不需要确保所有页面都属于某个特殊类别。
下面是一个示例:
如果您的 wiki 使用 Postgresql,则表“text”被命名为“pagecontent”,您可能需要指定架构。在这种情况下,相同的查询将是:
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:
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:
这对我来说非常有效。请注意,我将输出重定向到文件 backup.xml。从 Windows 命令处理器 (CMD.exe) 提示符:
This worked very well for me. Notice I redirected the output to the file backup.xml. From a Windows Command Processor (CMD.exe) prompt:
出口
进口
Export
Import
我对解决方案并不完全满意,但我最终为所有页面指定了一个通用类别,然后我可以在 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.
看起来并不简单。 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
您可以使用特殊页面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.
您可以设置 https://www.mediawiki.org/wiki/Manual:$wgExportAllowAll 为 true,然后从 Special:Export 导出所有页面。
You can set https://www.mediawiki.org/wiki/Manual:$wgExportAllowAll to true, then export all pages from Special:Export.