Hilfe:Export
![]() |
Hinweis: Wenn Du diese Seite bearbeitest, stimmst Du zu, dass Dein Beitrag unter der [CC0] veröffentlicht wird. Mehr Informationen findest du auf der Public Domain Hilfeseite. Einige alte Überarbeitungen für diese Seite wurden unter der CC BY-SA-Lizenz importiert. Nur neue Beiträge sind PD (Public Domain). |
![]() |
Wiki-Seiten können in einem speziellen XML-Format exportiert werden, um sie in eine andere MediaWiki-Installation zu importieren (wenn diese Funktion auf dem Zielwiki aktiviert und der Benutzer dort Administrator ist) oder um sie anderweitig zu verwenden, z.B. zur Analyse des Inhalts. Siehe zudem Syndication feeds für den Export von anderen Informationen als Seiten und Help:Import für den Import von Seiten.
Wie exportieren
Es gibt mindestens vier Möglichkeiten, Seiten zu exportieren:
- Füge den Namen der Artikel in das Feld in Special:Export ein oder verwende //www.mediawiki.org/wiki/Special:Export/FULLPAGENAME.
- Das Backup-Skript
dumpBackup.php
speichert alle Wikiseiten in einer XML-Datei.dumpBackup.php
läuft ab MediaWiki 1.5 oder neuer. Um dieses Skript auszuführen, musst du direkten Zugriff auf den Server haben. Dumps von Wikimedia-Projekten werden regelmäßig unter https://dumps.wikimedia.org/ zur Verfügung gestellt. - Es existiert eine Benutzeroberfläche namens OAI-PMH, über die du regelmäßig Seiten abrufen kannst, die seit einem bestimmten Zeitpunkt geändert wurden. Für Wikimedia-Projekte ist diese Schnittstelle nicht öffentlich zugänglich; siehe Wikimedia update feed service . OAI-PMH enthält ein Wrapper-Format um die eigentlichen exportierten Artikel.
- Verwende das Pywikibot-Framework. Das wird hier nicht erklärt.
Standardmäßig wird nur die aktuelle Version einer Seite einbezogen. Optional kannst du alle Versionen mit Datum, Uhrzeit, Benutzernamen und Bearbeitungszusammenfassung abrufen. Optional werden auch die neuesten Versionen aller direkt oder indirekt aufgerufenen Vorlagen exportiert. If you import a dump that doesn't include templates, then the resulting pages will probably render incorrectly if the templates they need do not exist on the destination wiki.
Zusätzlich kannst du die SQL-Datenbank kopieren. Auf diese Weise wurden vor MediaWiki 1.5 Dumps der Datenbank zur Verfügung gestellt und es wird hier nicht weiter erklärt.
Verwendung von 'Special:Export'
Um z.B. alle Seiten eines Namensraums zu exportieren.
Erhalte die Namen der zu exportierenden Seiten
Ich finde, ein Beispiel ist besser, weil die Beschreibung unten ziemlich unklar ist.
- Gehe zu Special:Allpages und wähle den gewünschten Artikel/die gewünschte Datei aus.
- Kopiere die Liste der Seitennamen in einen Texteditor
- Setze alle Seitennamen in separate Zeilen
- Das kannst du relativ schnell erreichen, wenn du den Teil der gerenderten Seite mit den gewünschten Namen kopierst und in z.B. MS Word einfügst - benutze das Spezial Einfügen als unformatierten Text - dann öffne die Ersetzen-Funktion (Strg+H), gib
^t
in Suchen nach ein, gib^p
in Ersetzen durch ein und drücke dann auf die Schaltfläche Alles ersetzen. (Dies beruht auf Tabulatoren zwischen den Seitennamen; diese sind typischerweise das Ergebnis der Tatsache, dass die Seitennamen innerhalb von td-Tags im HTML-Quelltext stehen.) - Der Texteditor Vim ermöglicht zudem eine schnelle Lösung für Behebungen von Zeilenumbrüchen: Nachdem du die gesamte Liste eingefügt hast, führe den Befehl :1,$s/\t/\r/g aus, um alle Tabulatoren durch Zeilenumbrüche zu ersetzen, und dann :1,$s/^\n//g, um alle Zeilen zu entfernen, die nur ein Zeilenumbruchzeichen enthalten.
- Eine andere Möglichkeit ist, den formatierten Text in einen beliebigen Editor zu kopieren, der den HTML-Code ausgibt. Entferne alle
<tr>
- und</tr>
-Tags und ersetze alle<td>
-Tags durch<tr><td>
und<td>
-Tags durch</td></tr>
. Das HTML wird dann in das gewünschte Format geparst. - Wenn du Shell- und MySQL-Zugriff auf deinen Server hast, kannst du dieses Skript verwenden:
- Das kannst du relativ schnell erreichen, wenn du den Teil der gerenderten Seite mit den gewünschten Namen kopierst und in z.B. MS Word einfügst - benutze das Spezial Einfügen als unformatierten Text - dann öffne die Ersetzen-Funktion (Strg+H), gib
mysql -umike -pmikespassword -hlocalhost wikidbname
select page_title from wiki_page where page_namespace=0
EOF
Hinweis: Ersetze mike und mikespassword durch deine eigenen. Dieses Beispiel zeigt zudem Tabellen mit dem Präfix wiki_
- Stelle den Namensraum den Seitennamen voran (z.B. 'Help:Contents'), es sei denn, der ausgewählte Namensraum ist der Hauptnamensraum.
- Wiederhole die obigen Schritte für andere Namensräume (z.B. Kategorie:, Vorlage:, etc.)
Ein ähnliches Skript für PostgreSQL-Datenbanken sieht wie folgt aus:
psql -At -U wikiuser -h localhost wikidb -c "select page_title from mediawiki.page"
Hinweis: Ersetze wikiuser durch deinen eigenen Namen, die Datenbank wird dich nach einem Passwort fragen. Dieses Beispiel zeigt Tabellen ohne das Präfix wiki_ und mit dem Namensraum als Teil des Tabellennamens.
Führe den Export aus
- Gehe zu Special:Export und füge alle deine Seitennamen in das Textfeld ein. Achte darauf, dass keine Leerzeilen existieren.
- Klick auf 'Anfrage abschicken'.
- Speichere die resultierende XML-Datei mit der Speicherfunktion deines Browsers in einer Datei.
Und schließlich...
- Die XML-Datei in einem Texteditor öffnen. Scrolle nach unten, um nach Fehlermeldungen zu suchen.
Jetzt kannst du diese XML-Datei verwenden, um einen Import durchzuführen.
Exportieren des gesamten Verlaufs
Das Exportieren der gesamten Versionsgeschichte kann wünschenswert sein, um Informationen zur Autorenschaft und die Namensnennung zu erhalten. Über ein Kontrollkästchen in der Benutzeroberfläche von Special:Export kannst du auswählen, ob du den gesamten Verlauf (alle Versionen eines Artikels) oder die aktuellste Version eines Artikels exportieren möchtest. Es werden maximal 100 Versionen zurückgegeben; weitere Versionen können wie in Parameters to Special:Export beschrieben angefragt werden.
Exportformat
Das Format der XML-Datei, die du erhältst, ist in jeder Hinsicht gleich.
Es ist im $1 Schema unter https://www.mediawiki.org/xml/export-0.11.xsd kodifiziert
Dieses Format ist nicht für die Anzeige in einem Webbrowser gedacht.
Einige Browser zeigen dir hübsch ausgedrucktes XML mit +
- und -
-Links, um ausgewählte Teile anzuzeigen oder auszublenden.
Alternativ kann die XML-Quelle mit der Funktion „Quelle anzeigen“ des Browsers oder nach dem lokalen Speichern der XML-Datei mit einem Programm deiner Wahl angezeigt werden.
Wenn du den XML-Quelltext direkt liest, wird es nicht schwierig sein, den eigentlichen Wiki-Text zu finden.
Wenn du keinen speziellen XML-Editor verwendest, erscheinen <code><</code> und <code>></code> als <syntaxhighlight lang="html" inline><</syntaxhighlight> und <syntaxhighlight lang="html" inline>></syntaxhighlight>, um einen Konflikt mit XML-Tags zu vermeiden; um Mehrdeutigkeit zu vermeiden, wird <syntaxhighlight lang="html" inline>&</syntaxhighlight> als <syntaxhighlight lang="html" inline>&</syntaxhighlight> codiert.
In der aktuellen Version enthält das Exportformat keinen XML-Ersatz für das Wiki-Markup (siehe Wikipedia DTD für einen älteren Vorschlag). Du erhältst nur den Wiki-Text, den du beim Bearbeiten des Artikels erhältst.
Beispiel
<mediawiki xml:lang="en">
<page>
<title>Page title</title>
<restrictions>edit=sysop:move=sysop</restrictions>
<revision>
<timestamp>2001-01-15T13:15:00Z</timestamp>
<contributor><username>Foobar</username></contributor>
<comment>I have just one thing to say!</comment>
<text>A bunch of [[Special:MyLanguage/text|text]] here.</text>
<minor />
</revision>
<revision>
<timestamp>2001-01-15T13:10:27Z</timestamp>
<contributor><ip>10.0.0.2</ip></contributor>
<comment>new!</comment>
<text>An earlier [[Special:MyLanguage/revision|revision]].</text>
</revision>
</page>
<page>
<title>Talk:Page title</title>
<revision>
<timestamp>2001-01-15T14:03:00Z</timestamp>
<contributor><ip>10.0.0.2</ip></contributor>
<comment>hey</comment>
<text>WHYD YOU LOCK PAGE??!!! i was editing that jerk</text>
</revision>
</page>
</mediawiki>
DTD
Hier ist eine inoffizielle, kurze Document Type Definition Version des Formats. Wenn du nicht weißt, was eine DTD ist, ignoriere sie einfach.
<!ELEMENT mediawiki (siteinfo,page*)>
<!-- version enthält die Versionsnummer des Formats (derzeit 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)> <!-- Name des Wiki -->
<!ELEMENT base (#PCDATA)> <!-- url der Hauptseite -->
<!ELEMENT generator (#PCDATA)> <!-- MediaWiki Version Zeichenfolge -->
<!ELEMENT case (#PCDATA)> <!-- Wie Groß- und Kleinschreibung in Seitennamen behandelt werden -->
<!-- Mögliche Werte: 'first-letter' | 'case-sensitive'
Die Option 'Case-insensitive' ist reserviert für zukünftige -->
<!ELEMENT namespaces (namespace+)> <!-- Liste der Namensräume und Präfixe -->
<!ELEMENT namespace (#PCDATA)> <!-- Enthält den Namensraum-Präfix -->
<!ATTLIST namespace key CDATA #REQUIRED> <!-- Interne Namensraumnummer -->
<!ELEMENT page (title,id?,restrictions?,(revision|upload)*)>
<!ELEMENT title (#PCDATA)> <!-- Titel mit Namensraum-Präfix -->
<!ELEMENT id (#PCDATA)>
<!ELEMENT restrictions (#PCDATA)> <!-- Optionale Seitenbeschränkungen -->
<!ELEMENT revision (id?,timestamp,contributor,minor?,comment?,text)>
<!ELEMENT timestamp (#PCDATA)> <!-- Nach ISO8601 -->
<!ELEMENT minor EMPTY> <!-- Kleine Flagge -->
<!ELEMENT comment (#PCDATA)>
<!ELEMENT text (#PCDATA)> <!-- Wikisyntax -->
<!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)>
Verarbeitung des XML-Exports
Viele Tools können die exportierte XML-Datei verarbeiten. Wenn du eine große Anzahl von Seiten verarbeitest (z.B. einen ganzen Dump), wirst du wahrscheinlich nicht in der Lage sein, das Dokument in den Hauptspeicher zu bekommen, so dass du einen Parser brauchst, der auf SAX oder anderen ereignisgesteuerten Methoden basiert.
Du kannst zudem reguläre Ausdrücke verwenden, um Teile des XML-Codes direkt zu verarbeiten. Das ist zwar schneller als andere Methoden, wird jedoch nicht empfohlen, weil es schwer zu pflegen ist.
Bitte führe hier Methoden und Tools für die Bearbeitung des XML-Exports auf:
- Parse MediaWiki Dump (crates.io) ist eine Rust-Crate zum Parsen von XML-Dumps.
- Parse Wiki Text (crates.io) ist eine Rust-Crate, die Wiki-Text in einen Baum von Elementen zerlegt.
- Parse::MediaWikiDump ist ein Perl-Modul zur Verarbeitung der XML-Dump-Datei.
- Verarbeitung von MediaWiki XML mit STX - Strombasierte XML-Transformation
- Das IBM Verlauf-Projekt kann es nach Anwendung eines kleinen Python-Programms, export-historyflow-expand.py, lesen.
Details und praktische Hinweise
- Um den Namensraum einer Seite zu bestimmen, musst du ihren Titel mit den in
/mediawiki/siteinfo/namespaces/namespace
definierten Präfixen abgleichen - Mögliche Beschränkungen sind
sysop
- geschützte Seiten
Warum exportieren
Weshalb nicht einfach eine dynamische Datenbank herunterladen?
Angenommen, du entwickelst eine Software, die an bestimmten Stellen Informationen aus der Wikipedia anzeigt. Wenn du möchtest, dass dein Programm die Informationen anders anzeigt, als sie in der Live-Version zu sehen sind, brauchst du wahrscheinlich den Wikicode, mit dem sie beigetreten sind, und nicht den fertigen HTML-Code.
Wenn du zudem alle Daten erhalten willst, musst du sie so effizient wie möglich übertragen. Die Wikimedia-Server müssen einiges an Arbeit tun, um den Wikicode in HTML umzuwandeln. Das ist sowohl für dich als auch für die Wikimedia-Server zeitaufwändig, daher ist es nicht sinnvoll, einfach alle Seiten zu spidern.
Um einen beliebigen Artikel in XML aufzurufen, gehst du zu Special:Export/Title_of_the_article