Help:Export

From MediaWiki.org
Jump to navigation Jump to search
This page is a translated version of the page Help:Export and the translation is 73% complete.
Other languages:
Deutsch • ‎English • ‎dansk • ‎español • ‎français • ‎italiano • ‎polski • ‎русский • ‎српски / srpski • ‎中文 • ‎日本語
PD Note : si vous modifiez cette page, vous acceptez de placer votre contribution sous licence CC0. Plus d’informations sont disponibles sur les pages d’aide concernant le domaine public.
Certaines anciennes révisions de cette page ont été importées sous licence CC BY-SA. Seules les nouvelles contributions sont dans le domaine public.
PD

Les pages Wiki peuvent être exportées dans un format spécial XML vers upload import dans une autre installation MediaWiki (si cette fonction est activée sur le wiki de destination, et que l'utilisateur est un sysop ) ou l'utiliser autrement pour analyser le contenu. Voir aussi m:Flux de syndication pour exporter d'autres informations sauf les pages et Help:Import lors de l'importation de pages.

Comment exporter

Il y a au moins quatre chemins pour exporter des pages :

  • Collez le nom des articles dans la boîte dans Special:Export ou utilisez //www.mediawiki.org/wiki/Special:Export/FULLPAGENAME.
  • Le script de sauvegarde dumpBackup.php place toutes les pages du wiki dans un fichier XML. dumpBackup.php ne fonctionne que sur MediaWiki 1.5 ou plus récent. Vous devez avoir un accès direct au serveur pour exécuter ce script. Les vidages des projets Wikimédia sont régulièrement disponibles au https://dumps.wikimedia.org/.
    • Remarque: vous devrez peut-être configurer AdminSettings.php pour exécuter dumpBackup.php avec succès. Voir m:MediaWiki pour plus d'informations.
  • Il existe une interface OAI-PMH pour récupérer régulièrement les pages qui ont été modifiées depuis un certain temps. Pour les projets Wikimedia, cette interface n'est pas accessible au public. voir Wikimedia update feed service . OAI-PMH contient un format d'emballage autour des articles réels exportés.
  • Utilisez le Robot Wikipedia Framework en Python . Cela ne sera pas expliqué ici

Par défaut, seule la version actuelle d'une page est incluse. En option, vous pouvez obtenir toutes les versions avec la date, l'heure, le nom d'utilisateur et le résumé d'édition. En option, la dernière version de tous les modèles appelés directement ou indirectement est également exportée.

De plus, vous pouvez copier la base de données SQL. C'est ainsi que les vidages de la base de données ont été rendus disponibles avant MediaWiki 1.5 et cela ne sera pas expliqué plus loin.

Utilisation de 'Spécial:Export'

Pour exporter toutes les pages d'un espace de noms, par exemple.

1. Obtenez les noms des pages à exporter

Je pense qu'un exemple est meilleur parce que la description ci-dessous est assez floue.

  1. Allez dans Special:Allpages et choisissez l'article/fichier désiré.
  2. Copier la liste des noms de pages dans un éditeur de texte
  3. Copier la liste des noms de pages dans un éditeur de texte
  4. Vous pouvez réaliser cela assez rapidement si vous copiez la partie de la page rendue avec les noms souhaités, et collez-la en MS Word - utilisez collage spécial comme texte non formaté - puis ouvrez la fonction de remplacement (CTRL + h), en entrant ^t dans Rechercher, entrez ^p dans Remplacer par, puis appuyez sur le bouton Remplacer tout. (Cela dépend des onglets entre les noms de pages ; ceux-ci sont généralement le résultat du fait que les noms de pages sont à l'intérieur de td-tags dans la source html.)
  5. L'éditeur de texte Vim permet également de corriger rapidement les sauts de ligne : après avoir collé toute la liste, exécutez la commande :1,$s/\t/\r/g pour remplacer tous les tabs par des retours chariot puis :1,$s/^\n//g pour supprimer chaque ligne contenant uniquement un caractère de nouvelle ligne.
  6. Une autre approche consiste à copier le texte formaté dans n'importe quel éditeur exposant le code HTML. Retirez toutes les balises <tr> et </tr> et remplacez toutes les balises <td> par les balises <tr><td> et </td> à </td></tr>. Le code html sera ensuite analysé dans le format requis.
  7. Si vous avez un accès shell et mysql à votre serveur, vous pouvez utiliser ce script :
#
mysql -umike -pmikespassword -hlocalhost wikidbname 
select page_title from wiki_page where page_namespace=0
EOF

Remarque, remplacez mike et mikespassword par les vôtres. En outre, cet exemple montre des tables avec le préfixe wiki_

  1. Préfixe l'espace de noms aux noms de pages (par exemple, "Aide:Contenu"), sauf si l'espace de noms sélectionné est l'espace de nom principal.
  2. Répétez les étapes ci-dessus pour les autres espaces de noms (e.g. Catégorie ; Modèle ; etc.)

Un script similaire pour des bases de données PostgreSQL ressemble à ça :

$ psql -At -U wikiuser -h localhost wikidb -c "select page_title from mediawiki.page"

Note, replacez "wikuser" par votre nom d'utilisateur, la base de données demandera ensuite votre mot de passe. Cette exemple montre des tables sans le préfixe wiki_ and avec l'espace de noms spécifié dans le nom de la table.

Alternativement, une approche rapide pour ceux avec un accès à une machine avec Python installé :

  1. Aller à Spécial:Toutes les pages et choisissez l'espace de noms desiré.
  2. Sauvegardez la page entière sous le nom index.php.htm. Certains wikis peuvent avoir plus de pages que ce qu'un écran de Spécial:Toutes_les_pages peut afficher ; il est nécessaire dans ce cas de sauvegarder chacune de ces pages.
  3. Lancer export_all_helper.py dans le même répertoire que le fichier sauvegardé. Vous pourriez souhaiter "piper" la sortie vers un fichier ; par exemple python export_all_helper.py > main pour l'envoyer vers un fichier nommé "main".
  4. Sauvegardez les noms de pages données en sortie par le script.

2. Réaliser l'export

  • Aller à Spécial:Export et copiez tous vos titres dans le champ de texte, en vous assurant de ne laisser aucune ligne vide.
  • Cliquer 'Exporter'
  • Sauvegarder le fichier XML résultant à l'aide de votre navigateur.

et finalement...

  • Ouvrez le fichier XML dans un éditeur de texte. Scroll to the bottom to check for error messages.

Vous pouvez maintenant utiliser ce fichier XML pour réaliser un import.

Exporter l'historique complet

Une case à cocher dans l'interface de Spécial:Export permet de sélectionner l'historique complet (toutes les versions d'un article) ou la version la plus récente des articles. Un maximum de 100 versions est retourné ; les autres révisions peuvent être demandées comme détaillé dans Parameters to Special:Export .

Format d'exportation

Le format du fichier XML que vous recevez est tout à fait le même. Il est codifié en schéma XML à https://www.mediawiki.org/xml/export-0.10.xsd Le format n'est pas destiné à être vu dans un navigateur web. Certains navigateurs vous montrent du XML proprement présenté avec des liens "+" ou "-" pour voir ou cacher les parties sélectionnées. Alternativement la source XML peut être vue avec la fonctionnlité "Voir la source" de votre navigateur, ou après avoir sauvegardé le fichier XML localement, avec le programme de votre choix. Si vous lisez directement la source XML ce ne sera pas difficile de trouver le wikitexte. Si vous n'utilisez pas d'éditeur XML "<" et ">" apparaitront comme &lt; et &gt;, afin d'éviter des conflits avec des balises XML ; pour éviter l'ambiguïté, "&" est codé comme "&amp;".

In the current version the export format does not contain an XML replacement of wiki markup (see Wikipedia DTD for an older proposal). You only get the wikitext as you get when editing the article.

Exemple

  <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

Here is an unofficial, short Document Type Definition version of the format. If you don't know what a DTD is just ignore it.

<!ELEMENT mediawiki (siteinfo,page*)>
<!-- version contains the version number of the format (currently 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 of the wiki -->
<!ELEMENT base (#PCDATA)>          <!-- url of the main page -->
<!ELEMENT generator (#PCDATA)>     <!-- MediaWiki version string -->
<!ELEMENT case (#PCDATA)>          <!-- how cases in page names are handled -->
   <!-- possible values: 'first-letter' | 'case-sensitive'
                         'case-insensitive' option is reserved for future -->
<!ELEMENT namespaces (namespace+)> <!-- list of namespaces and prefixes -->
  <!ELEMENT namespace (#PCDATA)>     <!-- contains namespace prefix -->
  <!ATTLIST namespace key CDATA #REQUIRED> <!-- internal namespace number -->
<!ELEMENT page (title,id?,restrictions?,(revision|upload)*)>
  <!ELEMENT title (#PCDATA)>         <!-- Title with namespace prefix -->
  <!ELEMENT id (#PCDATA)> 
  <!ELEMENT restrictions (#PCDATA)>  <!-- optional page restrictions -->
<!ELEMENT revision (id?,timestamp,contributor,minor?,comment?,text)>
  <!ELEMENT timestamp (#PCDATA)>     <!-- according to ISO8601 -->
  <!ELEMENT minor EMPTY>             <!-- minor flag -->
  <!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)>

Processing XML export

Many tools can process the exported XML. If you process a large number of pages (for instance a whole dump) you probably won't be able to get the document in main memory so you will need a parser based on SAX or other event-driven methods.

You can also use regular expressions to directly process parts of the XML code. This may be faster than other methods but not recommended because it's difficult to maintain.

Please list methods and tools for processing XML export here:

Details and practical advice

  • To determine the namespace of a page you have to match its title to the prefixes defined in

/mediawiki/siteinfo/namespaces/namespace

  • Les restrictions possibles sont
    • sysop (des pages protégées)

Pourquoi exporter ?

Why not just use a dynamic database download?

Suppose you are building a piece of software that at certain points displays information that came from Wikipedia. If you want your program to display the information in a different way than can be seen in the live version, you'll probably need the wikicode that is used to enter it, instead of the finished html.

Also if you want to get all of the data, you'll probably want to transfer it in the most efficient way that's possible. The Wikimedia servers need to do quite a bit of work to convert the wikicode into html. That's time consuming both for you and for the Wikimedia servers, so simply spidering all pages is not the way to go.

To access any article in XML, one at a time, link to:

Special:Export/Title_of_the_article

Voir aussi