Help:書き出し
このページの古い版の一部は、CC BY-SA ライセンスのもとで取り込まれました。 新しい編集のみがパブリックドメインと見なされます。 PD
ウィキページは、別に設置した MediaWiki に取り込むために、あるいはコンテンツを分析するといった別のことに利用するために、特別な XML 形式で書き出すことができます。 ページ以外をエクスポートするにはSyndication feedsを、ページのインポートには Help:インポート をご参照ください。(訳注:フィードも参照。)
書き出しの方法
ページを書き出す方法が少なくとも 4 つあります:
- 記事の名前を Special:Export 内の枠に貼り付けるか、 //www.mediawiki.org/wiki/Special:Export/FULLPAGENAME を使用します。
- バックアップスクリプト
dumpBackup.phpは、すべてのウィキページを XML ファイルにダンプします。dumpBackup.phpは MediaWiki 1.5 以降でのみ動作します。 このスクリプトを実行するには、サーバに直接アクセスする必要があります。 https://dumps.wikimedia.org/ でウィキメディアのプロジェクト群のダンプを定期的に提供します。 - ここでは説明しませんが、Pywikibot フレームワークを使用します。
さらに SQL データベースの複写も可能です。 これは、MediaWiki 1.5 以前でデータベースのダンプを利用できるようにした方法であり、ここではこれ以上説明しません。
'Special:Export' の使用
既定では特定のページの最新の特定版のみ含みます。 オプションとして、日付、時刻、利用者名や編集要約欄の記述とともに全ての版を入手できます。 オプションとして全テンプレートの最新版 (直接もしくは間接的に呼ぶ) も、書き出します。
以下の例のように特定の名前空間の全ページを書き出す場合。
書き出すページの名前を取得する
- Special:Allpages に行き、希望する記事/ファイルを選びます。
- ページ名の一覧をテキストエディタにコピーします。
- すべてのページ名を別々の行に配置します。
- テキスト エディターの検索と置換機能を使って、タブ文字を改行に置き換えることで、比較的短時間でこれを実現できます。
- または、生の HTML をエディターにコピーして、すべての表セルを 1 セルの表行に変換するという方法もあります。
- サーバーにシェルと MySQL へのアクセス権がある場合、以下のスクリプトを使用できます:
mysql-umike-pmikespassword-hlocalhostwikidbname selectpage_titlefromwiki_pagewherepage_namespace=0 EOF
注: mike と mikespassword を自分のものに置き換えてください。 また、この例ではテーブルの接頭辞として wiki_ を使用しています。
- 選択した名前空間が標準名前空間以外の場合は、ページ名に名前空間を前置します (例: 'Help:Contents')。
- 他の名前空間について、上記の手順を繰り返します(例:Category:、Template: その他)
PostgreSQL データベース向けの同様のスクリプト:
psql-At-Uwikiuser-hlocalhostwikidb-c"select page_title from mediawiki.page"
注記:「wikiuser」をあなた自身のものに変更すると、データベースはあなたにパスワードの確認をします。 このサンプルは接頭辞 wiki_ を省略して表にまとめ、名前空間名は、表の名称に組み込んであります。
エクスポートの実行
- Special:Export を開きテキストボックスに全てのページ名を貼り付け、空行がないことを確認してください。
書き出しをクリック- 出力されたXMLファイルをブラウザの保存機能を使用して保存します。
そして最後に...
- テキストエディターでXMLファイルを開きます。 一番下までスクロールしエラーメッセージを確認します。
この XML ファイルを利用してインポート処理が実行できるようになりました。
完全な履歴の書き出し
履歴もエクスポートすることで編集者情報と帰属をはっきりさせることができるため、この方法が理想的かもしれません。 Special:Exportの画面にあるチェックボックスで、ページの全版を含む履歴をエクスポートするか最新の版のみをエクスポートするか選べます。 改版100件を上限として返します。その他の改版は Parameters to Special:Export に説明した手順で申請してください。
書き出しの形式
XML ファイルとして入手する形式はあらゆる点で統一がされいます。
https://www.mediawiki.org/xml/export-0.11.xsd に XML スキーマで記述されています。
この形式は、ウェブブラウザで表示することを前提にしていません。
ブラウザの中には、 + や - のリンクを用意し、きちんと整った体裁で XML を表示するものがあります。
あるいはまた XML-ソースの内容を閲覧する代替の方法として、ウェブブラウザの「ソースを見る」機能を使うか、あるいはプログラムを選んでローカルに XML ファイルを保存して以降、表示させます。
XML ソースを直接読めば、実際のウィキテキストを探し出すのは難しくありません。
特別な XML エディターを使用しない場合、XML タグとの競合を避けるために < と > はそれぞれ < と > に変換されます。また、曖昧さを避けるために & は & に符号化されます。
現在のバージョンでは、ウィキマークアップ言語のXML置換をするエクスポート書式がありません(古い提案はWikipedia DTDを参照)。 記事を編集するときと同じようにウィキテキストを取得します。
例
<mediawikixml:lang="en"> <page> <title>Pagetitle</title> <restrictions>edit=sysop:move=sysop</restrictions> <revision> <timestamp>2001年01月15日T13:15:00Z</timestamp> <contributor><username>Foobar</username></contributor> <comment>Ihavejustonethingtosay!</comment> <text>Abunchoftexthere.</text> <minor/> </revision> <revision> <timestamp>2001年01月15日T13:10:27Z</timestamp> <contributor><ip>10.0.0.2</ip></contributor> <comment>new!</comment> <text>Anearlierrevision.</text> </revision> </page> <page> <title>Talk:Pagetitle</title> <revision> <timestamp>2001年01月15日T14:03:00Z</timestamp> <contributor><ip>10.0.0.2</ip></contributor> <comment>hey</comment> <text>WHYDYOULOCKPAGE??iwaseditingthat</text> </revision> </page> </mediawiki>
DTD
非公式ではありますが、書式を短くまとめたDocument Type Definition (文書型定義、DTD) をご紹介します。 もし DTD が何かわからなくても読み飛ばしてください。
<!ELEMENT mediawiki (siteinfo,page*)> <!-- バージョンにはフォーマットのバージョン番号が含まれます(現在は0.3) --> <!ATTLIST mediawiki version CDATA #REQUIRED xmlns CDATA #FIXED "https://www.mediawiki.org/xml/export-0.3/" xmlns:xsi CDATA #FIXED "http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation CDATA #FIXED "https://www.mediawiki.org/xml/export-0.3/ https://www.mediawiki.org/xml/export-0.3.xsd" xml:lang CDATA #IMPLIED > <!ELEMENT siteinfo (sitename,base,generator,case,namespaces)> <!ELEMENT sitename (#PCDATA)><!-- ウィキの名前 --> <!ELEMENT base (#PCDATA)><!-- メインページの URL --> <!ELEMENT generator (#PCDATA)><!-- MediaWiki バージョンの文字列 --> <!ELEMENT case (#PCDATA)><!-- ページ名前空間でどのように事案を処理するか --> <!-- 取りうる値: 'first-letter' | 'case-sensitive' 'Case-insensitive' オプションは将来のために予約されています --> <!ELEMENT namespaces (namespace+)><!-- 名前空間と接頭辞の一覧 --> <!ELEMENT namespace (#PCDATA)><!-- 名前空間の接頭辞付き --> <!ATTLIST namespace key CDATA #REQUIRED><!-- 内部名前空間番号 --> <!ELEMENT page (title,id?,restrictions?,(revision|upload)*)> <!ELEMENT title (#PCDATA)><!-- 名前空間の接頭辞がついた記事題名 --> <!ELEMENT id (#PCDATA)> <!ELEMENT restrictions (#PCDATA)><!-- 任意のページ制限 --> <!ELEMENT revision (id?,timestamp,contributor,minor?,comment?,text)> <!ELEMENT timestamp (#PCDATA)><!-- ISO8601による表記 --> <!ELEMENT minor EMPTY><!-- 細部の編集フラグ --> <!ELEMENT comment (#PCDATA)> <!ELEMENT text (#PCDATA)><!-- ウィキ構文 --> <!ATTLIST text xml:space CDATA #FIXED "preserve"> <!ELEMENT contributor ((username,id) | ip)> <!ELEMENT username (#PCDATA)> <!ELEMENT ip (#PCDATA)> <!ELEMENT upload (timestamp,contributor,comment?,filename,src,size)> <!ELEMENT filename (#PCDATA)> <!ELEMENT src (#PCDATA)> <!ELEMENT size (#PCDATA)>
XML 出力の手順
XML 出力を扱えるツールは多いです。 大量のページ(例えばダンプ全体)を処理する場合、おそらくメインメモリに文書を取得できないので、 SAX または他のイベント駆動型手法ベースのパーサを使う必要があるでしょう。
正規表現で直接、XML コードの当該部分を処理することもできます。 他の方法より時間は節約できても、管理が困難で非推奨です。
ここに XML 書き出しに使える方法とツールを追記してください。
- Parse MediaWiki Dump (crates.io ) は XML ダンプを構文解析する Rust のクレートです。
詳細と実用のヒント
- ページの名前空間名を決定するために、
/mediawiki/siteinfo/namespaces/namespaceで定義されている前置詞にタイトルを合致させる必要があります - 次の制限がかかる可能性があります。
sysop- 保護されたページ
書き出しをする理由
単純に動的データベースのダウンロードを使えば済むのでは?
ある時点でのウィキペディアからの情報を表示するソフトウェアを構築しているとします。 自分のプログラムにライブバージョンで見られるのとは異なる方法で情報を表示させたい場合、おそらく完成したHTMLではなく、入力に使用されるウィキコードが必要になります。
また、すべてのデータを取得したい場合は、可能な限り最も効率的な方法でデータを移す必要があります。 ウィキメディアサーバーは、ウィキコードをHTMLに変換するためにかなりの作業を行う必要があります。 これはあなたにとってもウィキメディアサーバーにとっても時間がかかるので、単にすべてのページをスパイダーするだけではうまくいきません。
XML 形式で任意の記事に、1回に1記事ずつアクセスするには、 Special:Export/Title_of_the_article に移動します。