Question

Je suis assez nouveau sur MediaWiki et maintenant, j'ai un petit problème. J'ai le titre d'une page de wiki et je souhaite obtenir uniquement 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 du 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?

Était-ce utile?

La solution

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

Ce qui a fonctionné pour moi a été 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.

EDIT:

L’utilisation de analyseur HTML pour Java a donné de bons résultats. Il contient des exemples sur la manière de supprimer les balises HTML sous une DIV donnée.

Autres conseils

Utilisez action = parse pour obtenir le code HTML:

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

Pour extraire le texte du code HTML, vous pouvez le charger dans un navigateur et parcourir les nœuds, en recherchant uniquement les nœuds de texte, à l'aide de JavaScript.

L'extension TextExtracts de l'API traite de ce que vous demandez. Utilisez prop = extraits pour obtenir une réponse nettoyée. Par exemple, ce lien vous indiquera ce lien. texte pour l'article Stack Overflow . Ce qui est également intéressant, c’est qu’il inclut toujours des balises de section, ce qui vous permet d’identifier des 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

Éditer: comme Amr l’a mentionné, TextExtracts est une extension de MediaWiki. Il ne sera donc pas nécessairement disponible pour tous les sites MediaWiki.

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

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

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 sous forme de texte brut au lieu de HTML limité.
  • exlimit = max : Renvoie plusieurs résultats. Le max est actuellement de 20.
  • exintro : Renvoie uniquement le contenu avant la première section. Si vous voulez les données complètes, supprimez simplement ceci.
  • redirect = = : résolvez les problèmes de redirection.

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

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

Chaque mise en forme, à l'exception des sections ( == ), est supprimée par bandes.

Les pages wiki sans symboles de mise en forme n'auraient pas beaucoup de sens dans de nombreux cas.

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

(sauf si vous créez quelque chose comme un moteur de recherche, dans ce cas, vous aurez uniquement besoin des parties de texte et pourrez ignorer complètement les symboles de mise en forme)

Vous pouvez faire quelque chose une fois le contenu importé dans votre page: vous pouvez utiliser la fonction PHP strip_tags () pour supprimer les balises HTML.

scroll top