Nápověda:Export
![]() |
Poznámka: Úpravou této stránky souhlasíte s uvolněním vašeho příspěvku pod licencí CC0. Více informací získáte na stránce nápovědy veřejné domény. Některé starší revize k této stránce byly importovány pod licencí CC BY-SA. Pouze nové příspěvky jsou Publik Domain (PD) (veřejná doména). |
![]() |
Wiki stránky lze exportovat ve speciálním formátu XML pro nahrání importu do jiné instalace MediaWiki (pokud je tato funkce na cílové wiki povolena a uživatel je tam správcem) nebo je použít jinak, například pro analýzu obsahu. Viz také Syndikované kanály pro export dalších informací kromě stránek a Help:Import pro import stránek.
Jak exportovat obsah wiki
Existují nejméně čtyři způsoby exportu stránek:
- Vložte název článků do pole Special:Export nebo použijte //www.mediawiki.org/wiki/Special:Export/FULLPAGENAME.
- Zálohovací skript
dumpBackup.php
vypíše všechny stránky wiki do souboru XML.dumpBackup.php
funguje pouze v MediaWiki 1.5 nebo novější. Pro spuštění tohoto skriptu musíte mít přímý přístup k serveru. Výpisy projektů Wikimedie jsou pravidelně k dispozici na adrese https://dumps.wikimedia.org/. - Pro pravidelné načítání stránek, které byly od určitého okamžiku změněny, existuje rozhraní známé jako OAI-PMH. U projektů Wikimedie není toto rozhraní veřejně dostupné; viz Wikimedia update feed service . OAI-PMH obsahuje ochranný formát kolem vlastních exportovaných článků.
- Prostudujte si příručku, jak používat Pywikibota, v ní je vše co potřebujete vědět.
Ve výchozím nastavení je zahrnuta pouze aktuální verze stránky. Volitelně můžete získat všechny verze s datem, časem, uživatelským jménem a souhrnem úprav. Volitelně jsou exportovány také nejnovější verze všech přímo nebo nepřímo volaných šablon. 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.
Kromě toho můžete zkopírovat databázi SQL. Takto byly k dispozici výpisy databáze před verzí MediaWiki 1.5 a nebudeme je zde dále vysvětlovat.
Použití 'Special:Export'
Export všech stránek oboru názvů, například.
Získání názvů stránek pro export
Mám pocit, že příklad je lepší, protože níže uvedený popis mi připadá dost nejasný.
- Přejděte na položku Special:Allpages a vyberte požadovaný článek/soubor.
- Zkopírujte seznam názvů stránek do textového editoru.
- Umístěte všechny názvy stránek na samostatné řádky
- Toho lze dosáhnout poměrně rychle, pokud zkopírujete část vykreslené stránky s požadovanými názvy a vložíte ji například do MS Word - použijte speciální příkaz Vložit jako neformátovaný text - pak otevřete funkci Nahradit (Ctrl+H), do pole Najít co zadejte
^t
, do pole Nahradit s zadejte^p
a stiskněte tlačítko Nahradit vše. (To se opírá o tabulátory mezi názvy stránek; ty jsou obvykle důsledkem toho, že názvy stránek jsou uvnitř značek td ve zdrojovém kódu HTML.) - Textový editor Vim také umožňuje rychlý způsob opravy zalomení řádků: Po vložení celého seznamu spusťte příkaz :1,$s/\t/\r/g, který nahradí všechny tabulátory znaky návratu vozíku, a poté :1,$s/^\n//g, který odstraní každý řádek obsahující pouze znak nového řádku.
- Dalším postupem je zkopírování formátovaného textu do libovolného editoru, který zobrazuje HTML. Odstraňte všechny značky
<tr>
a</tr>
a nahraďte všechny značky<td>
na<tr><td>
a<td>
na</td></tr>
, HTML bude poté zpracováno do potřebného formátu. - Pokud máte k serveru přístup přes příkazový řádek a MySQL, můžete tento skript použít:
- Toho lze dosáhnout poměrně rychle, pokud zkopírujete část vykreslené stránky s požadovanými názvy a vložíte ji například do MS Word - použijte speciální příkaz Vložit jako neformátovaný text - pak otevřete funkci Nahradit (Ctrl+H), do pole Najít co zadejte
mysql -umike -pmikespassword -hlocalhost wikidbname
select page_title from wiki_page where page_namespace=0
EOF
Všimněte si, že mike a mikespassword nahradíte svými vlastními. Tento příklad také zobrazuje tabulky s předponou wiki_
- Předpona jmenného prostoru k názvům stránek (např. 'Help:Contents'), pokud vybraný jmenný prostor není hlavní jmenný prostor.
- Opakujte výše uvedené kroky pro další jmenné prostory (např. Category:, Template: atd.)
Podobný skript pro databáze PostgreSQL vypadá takto:
psql -At -U wikiuser -h localhost wikidb -c "select page_title from mediawiki.page"
Poznámka: nahraďte jméno uživatele svým vlastním, databáze vás vyzve k zadání hesla. Tento příklad ukazuje tabulky bez předpony wiki_ a se jmenným prostorem zadaným jako součást názvu tabulky.
Provedení exportu
- Přejděte na stránku Special:Export a vložte všechny názvy stránek do textového pole, přičemž se ujistěte, že v něm nejsou žádné prázdné řádky.
- Klikněte na tlačítko 'Odeslat dotaz'
- Výsledné XML uložte do souboru pomocí funkce pro ukládání v prohlížeči.
A na závěr...
- Otevřete soubor XML v textovém editoru. Přejděte na konec a zkontrolujte chybová hlášení.
Nyní můžete tento soubor XML použít k provedení importu.
Export celé historie
Export stránky, včetně všech revizí se hodí, pokud mají být zachovány veškeré informace o tom, kdo a čím k obsahu stránky přispěl. Zaškrtávací políčko v rozhraní Special:Export určuje, zda se má exportovat celá historie (všechny verze článku), nebo nejnovější verze článků. Vrací se maximálně 100 revizí; další revize lze vyžádat v souladu s podmínkami uvedenými v Parameters to Special:Export .
Formát exportu
Formát přijatého souboru XML je ve všech případech stejný.
Je kodifikován ve $1 Schéma na adrese https://www.mediawiki.org/xml/export-0.11.xsd
Tento formát není určen k prohlížení ve webovém prohlížeči.
Některé prohlížeče zobrazují pěkně vytištěné XML s odkazy +
a -
pro zobrazení nebo skrytí vybraných částí.
Alternativně lze zdroj XML zobrazit pomocí funkce "view source" v prohlížeči nebo po uložení souboru XML lokálně pomocí zvoleného programu.
Pokud si přečtete přímo zdroj XML, nebude obtížné najít skutečný text wiki.
Pokud nepoužíváte speciální editor XML <code><</code> a <code>></code> se zobrazují jako <syntaxhighlight lang="html" inline><</syntaxhighlight> a <syntaxhighlight lang="html" inline>></syntaxhighlight>, aby se předešlo konfliktu se značkami XML; aby se předešlo nejednoznačnosti, je <syntaxhighlight lang="html" inline>&</syntaxhighlight> kódováno jako <syntaxhighlight lang="html" inline>&</syntaxhighlight>.
V současné verzi formát exportu neobsahuje náhradu značek wiki ve formátu XML (starší návrh viz Wikipedia DTD). Při editaci článku se zobrazí pouze text wiki.
Příklad
<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
Zde je neoficiální, zkrácená definice typu dokumentu verze formátu. Pokud nevíte, co je to DTD, prostě to ignorujte.
<!ELEMENT mediawiki (siteinfo,page*)>
<!-- verze obsahuje verze číslo formátu (v současné době 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)> <!-- Jméno wiki -->
<!ELEMENT base (#PCDATA)> <!-- URL hlavní stránky -->
<!ELEMENT generator (#PCDATA)> <!-- Řetězec verze MediaWiki -->
<!ELEMENT case (#PCDATA)> <!-- Jak se zpracovávají pády v názvech stránek -->
<!-- možné hodnoty: 'first-letter' | 'case-sensitive'
Možnost 'Case-insensitive' je vyhrazena pro budoucnost -->
<!ELEMENT namespaces (namespace+)> <!-- Seznam jmenných prostorů a předpon -->
<!ELEMENT namespace (#PCDATA)> <!-- Obsahuje předponu jmenného prostoru -->
<!ATTLIST namespace key CDATA #REQUIRED> <!-- Číslo interního jmenného prostoru -->
<!ELEMENT page (title,id?,restrictions?,(revision|upload)*)>
<!ELEMENT title (#PCDATA)> <!-- Název s předponou jmenného prostoru -->
<!ELEMENT id (#PCDATA)>
<!ELEMENT restrictions (#PCDATA)> <!-- Volitelná omezení stránky -->
<!ELEMENT revision (id?,timestamp,contributor,minor?,comment?,text)>
<!ELEMENT timestamp (#PCDATA)> <!-- Podle ISO8601 -->
<!ELEMENT minor EMPTY> <!-- Malá značka -->
<!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)>
Zpracování exportu XML
Exportované XML dokáže zpracovat mnoho nástrojů. Pokud zpracováváte velký počet stránek (například celý výpis), pravděpodobně nebudete schopni dostat dokument do hlavní paměti, takže budete potřebovat analyzátor založený na metodách SAX nebo jiných metodách řízených událostmi.
Regulární výrazy můžete použít také k přímému zpracování částí kódu XML. Tento způsob může být rychlejší než jiné metody, ale nedoporučuje se, protože se obtížně udržuje.
Zde prosím uveďte metody a nástroje pro zpracování exportu XML:
- Parse MediaWiki Dump (crates.io) je skript Rust pro analýzu výpisů XML.
- Parse Wiki Text (crates.io) je skript Rust pro rozbor textu wiki do stromu prvků.
- Parse::MediaWikiDump je modul perlu pro zpracování výpisu XML.
- Zpracování MediaWiki XML pomocí STX – transformace XML založená na datovém toku
- Projekt IBM History flow jej může číst po použití malého programu Python, export-historyflow-expand.py.
Podrobnosti a praktické rady
- Chcete-li určit jmenný prostor stránky, musíte její název přiřadit k předponám definovaným v poli
/mediawiki/siteinfo/namespaces/namespace
. - Možná omezení jsou:
sysop
- Zabezpečené stránky
Proč exportovat
Proč prostě nepoužít dynamickou databázi ke stažení?
Předpokládejme, že vytváříte software, který na určitých místech zobrazuje informace pocházející z Wikipedie. Pokud chcete, aby váš program zobrazoval informace jiným způsobem, než je možné vidět v živé verzi, budete pravděpodobně potřebovat wikikód, který se používá k jejich zadávání, namísto hotového HTML.
Pokud chcete získat všechna data, budete je pravděpodobně chtít přenést co nejefektivnějším způsobem. Na serverech Wikimedie je potřeba udělat poměrně dost práce, aby se wikikód převedl do HTML. To je časově náročné jak pro vás, tak pro servery Wikimedie, takže prosté procházení všech stránek není tou správnou cestou.
Chcete-li získat přístup k libovolnému článku ve formátu XML, přejděte na stránku Special:Export/Title_of_the_article