web-dev-qa-db-fra.com

Obtenir le contenu texte de la page mediawiki via l'API

Je suis assez nouveau sur MediaWiki, et maintenant j'ai un petit problème. J'ai le titre d'une page Wiki, et je veux obtenir juste le texte d'une page en utilisant api.php, mais tout ce que j'ai trouvé dans l'API est un moyen d'obtenir le contenu Wiki de la page (avec balisage wiki). J'ai utilisé cette requête HTTP ...

/api.php?action=query&prop=revisions&rvlimit=1&rvprop=content&format=xml&titles=test

Mais je n'ai besoin que du contenu textuel, sans le balisage Wiki. Est-ce possible avec l'API MediaWiki?

55
Le_Coeur

Je ne pense pas qu'il soit possible d'utiliser l'API pour obtenir uniquement le texte.

Ce qui a fonctionné pour moi, c'était de demander la page HTML (en utilisant l'URL normale que vous utiliseriez dans un navigateur) et de supprimer les balises HTML sous la div de contenu.

ÉDITER:

J'ai eu de bons résultats en utilisant HTML Parser pour Java. Il contient des exemples sur la façon de supprimer les balises HTML sous un DIV donné.

5
Eric Normand

Utilisation action=parse pour obtenir le html:

/ api.php? action = parse & page = test

Une façon d'obtenir le texte du HTML serait de le charger dans un navigateur et de parcourir les nœuds, en ne cherchant que les nœuds de texte, en utilisant JavaScript.

66
gilly3

L'extension TextExtracts de l'API fait ce que vous demandez. Utilisation prop=extracts pour obtenir une réponse nettoyée. Par exemple, ce lien vous donnera un texte nettoyé pour l'article Stack Overflow . Ce qui est également agréable, c'est qu'il comprend toujours des balises de section, de sorte que vous pouvez identifier les sections individuelles de l'article.

Juste pour inclure un lien visible dans ma réponse, le lien ci-dessus ressemble à:

/api.php?format=xml&action=query&prop=extracts&titles=Stack%20Overflow&redirects=true

Edit: Comme Amr l'a mentionné, TextExtracts est une extension de MediaWiki, donc il ne sera pas nécessairement disponible pour tous les sites MediaWiki.

41
eric.mitchell

Ajouter ?action=raw à la fin d'une page MediaWiki renvoie le dernier contenu au format texte brut. Par exemple: - https://en.wikipedia.org/wiki/Main_Page?action=raw

28
baijum

Vous pouvez obtenir les données wiki au format texte à partir de l'API en utilisant le paramètre explaintext. De plus, si vous avez besoin d'accéder aux informations de nombreux titres, vous pouvez obtenir toutes les données wiki des titres en un seul appel. Utilisez le caractère pipe | pour séparer chaque titre. Par exemple, cet appel API retournera les données des pages "Google" et "Yahoo":

http://en.wikipedia.org/w/api.php?format=json&action=query&prop=extracts&exlimit=max&explaintext&exintro&titles=Yahoo|Google&redirects=

Paramètres:

  • explaintext: Renvoie les extraits en texte brut au lieu de HTML limité.
  • exlimit=max: Renvoie plusieurs résultats. Le maximum est actuellement de 20.
  • exintro: Renvoie uniquement le contenu avant la première section. Si vous voulez les données complètes, supprimez-les.
  • redirects=: Résoudre les problèmes de redirection.
23
Anuraj
10
Hardest

Les utilisateurs de Python venant à cette question pourraient être intéressés par le module wikipedia ( docs ):

import wikpedia
wikipedia.set_lang('de')
page = wikipedia.page('Wikipedia')
print(page.content)

Toutes les mises en forme, à l'exception des sections (==) est rayé.

3
Martin Thoma
2
Yaza

Les pages Wiki sans symboles de formatage n'auraient pas vraiment de sens dans de nombreux cas.

Vous pouvez supprimer le formatage vous-même, si vous le souhaitez, mais vous allez casser certaines choses dans le processus.

(sauf si vous créez quelque chose comme un moteur de recherche, auquel cas vous n'aurez besoin que des parties de texte et pourrez ignorer complètement les symboles de formatage)

0
Joel L