J'ai juste besoin de récupérer le premier paragraphe d'une page Wikipedia. Le contenu doit être au format html, prêt à être affiché sur mes sites Web (donc PAS de BBCODE, ni de CODE spécial WIKIPEDIA!)
api
wikipedia
wikipedia-api
scintillait
la source
la source
Réponses:
Il existe un moyen d'obtenir l'intégralité de la "section d'introduction" sans aucune analyse html! Semblable à la réponse d'AnthonyS avec un
explaintext
paramètre supplémentaire , vous pouvez obtenir le texte de la section d'introduction en texte brut.Requete
Obtenir l'intro de Stack Overflow en texte brut:
https://en.wikipedia.org/w/api.php?format=json&action=query&prop=extracts&exintro&explaintext&redirects=1&titles=Stack%20Overflow
Réponse JSON
(avertissements supprimés)
Documentation: API: query / prop = extraits
Edit: Ajouté
&redirects=1
comme recommandé dans les commentaires.la source
$extract = current((array)$data->query->pages)->extract;
. mais "Remarque: essayer d'obtenir la propriété d'un non-objet" continue d'arriver.Il existe en fait un très bon accessoire appelé extraits qui peut être utilisé avec des requêtes spécialement conçues à cet effet. Les extraits vous permettent d'obtenir des extraits d'articles (texte d'article tronqué). Il existe un paramètre appelé exintro qui peut être utilisé pour récupérer le texte dans la section zéro (pas de ressources supplémentaires comme des images ou des infoboxes). Vous pouvez également récupérer des extraits avec une granularité plus fine comme par exemple par un certain nombre de caractères ( exchars ) ou par un certain nombre de phrases ( exsentences )
Voici un exemple de requête http://en.wikipedia.org/w/api.php?action=query&prop=extracts&format=json&exintro=&titles=Stack%20Overflow et le sandbox de l' API http://en.wikipedia.org/wiki/ Spécial: ApiSandbox # action = query & prop = extraits & format = json & exintro = & title = Stack% 20Overflow pour expérimenter plus avec cette requête.
Veuillez noter que si vous voulez le premier paragraphe spécifiquement, vous devez encore effectuer une analyse supplémentaire, comme suggéré dans la réponse choisie. La différence ici est que la réponse renvoyée par cette requête est plus courte que certaines des autres requêtes d'API suggérées car vous n'avez pas d'actifs supplémentaires tels que des images dans la réponse de l'API à analyser.
la source
Depuis 2017, Wikipedia fournit une API REST avec une meilleure mise en cache. Dans la documentation, vous pouvez trouver l'API suivante qui correspond parfaitement à votre cas d'utilisation. (tel qu'il est utilisé par la nouvelle fonctionnalité d' aperçu de page )
https://en.wikipedia.org/api/rest_v1/page/summary/Stack_Overflow
renvoie les données suivantes qui peuvent être utilisées pour afficher un résumé avec une petite vignette:Par défaut, il suit les redirections (ce qui
/api/rest_v1/page/summary/StackOverflow
fonctionne également), mais cela peut être désactivé avec?redirect=false
Si vous avez besoin d'accéder à l'API depuis un autre domaine, vous pouvez définir l'en-tête CORS avec
&origin=
(par exemple&origin=*
)Mise à jour 2019: l'API semble renvoyer des informations plus utiles sur la page.
la source
"other_tags" : "\"addr:country\"=>\"CW\",\"historic\"=>\"ruins\",\"name:nl\"=>\"Riffort\",\"wikidata\"=>\"Q4563360\",\"wikipedia\"=>\"nl:Riffort\""
Pouvons-nous obtenir l'extrait maintenant par le QID?Ce code vous permet de récupérer le contenu du premier paragraphe de la page en texte brut.
Certaines parties de cette réponse viennent d' ici et donc d' ici . Consultez la documentation de l'API MediaWiki pour plus d'informations.
la source
Oui il y a. Par exemple, si vous souhaitez obtenir le contenu de la première section de l'article Stack Overflow , utilisez une requête comme celle-ci:
http://en.wikipedia.org/w/api.php?format=xml&action=query&prop=revisions&titles=Stack%20Overflow&rvprop=content&rvsection=0&rvparse
Les parties signifient ceci:
format=xml
: Renvoie le formateur de résultats au format XML. D'autres options (comme JSON) sont disponibles. Cela n'affecte pas le format du contenu de la page lui-même, uniquement le format des données englobantes.action=query&prop=revisions
: Obtenez des informations sur les révisions de la page. Puisque nous ne spécifions pas quelle révision, la dernière est utilisée.titles=Stack%20Overflow
: Obtenir des informations sur la pageStack Overflow
. Il est possible d'obtenir le texte de plusieurs pages en une seule fois, si vous séparez leurs noms par|
.rvprop=content
: Renvoie le contenu (ou le texte) de la révision.rvsection=0
: Renvoie uniquement le contenu de la section 0.rvparse
: Renvoie le contenu analysé au format HTML.Gardez à l'esprit que cela renvoie toute la première section, y compris des éléments tels que des notes à chapeau («Pour d'autres utilisations…»), des infoboxes ou des images.
Il existe plusieurs bibliothèques disponibles pour différents langages qui facilitent le travail avec l'API, il peut être préférable pour vous d'utiliser l'une d'entre elles.
la source
&redirects=true
à la fin du lien garantit que vous accédez à l'article de destination, s'il en existe un.C'est le code que j'utilise actuellement pour un site Web que je crée qui doit obtenir les principaux paragraphes / résumé / section 0 des articles hors Wikipédia, et tout est fait dans le navigateur (javascript côté client) grâce à la magie de JSONP! -> http://jsfiddle.net/gautamadude/HMJJg/1/
Il utilise l'API Wikipedia pour obtenir les principaux paragraphes (appelés section 0) en HTML comme ceci: http://en.wikipedia.org/w/api.php?format=json&action=parse&page=Stack_Overflow&prop=text§ion=0&callback=?
Il supprime ensuite le HTML et d'autres données indésirables, vous donnant une chaîne propre d'un résumé d'article, si vous le souhaitez, vous pouvez, avec un peu d'ajustement, obtenir une balise html "p" autour des premiers paragraphes, mais pour le moment, il n'y a qu'une nouvelle ligne caractère entre eux.
Code:
la source
Cette URL renverra un résumé au format xml.
J'ai créé une fonction pour récupérer la description d'un mot-clé de wikipedia.
la source
Vous pouvez également obtenir du contenu tel que le premier pagagraph via DBPedia qui prend le contenu de Wikipedia et crée des informations structurées à partir de celui-ci (RDF) et le rend disponible via une API. L'API DBPedia est une API SPARQL (basée sur RDF) mais elle génère du JSON et il est assez facile à encapsuler.
À titre d'exemple, voici une bibliothèque JS super simple nommée WikipediaJS qui peut extraire un contenu structuré comprenant un premier paragraphe de résumé: http://okfnlabs.org/wikipediajs/
Vous pouvez en savoir plus à ce sujet dans cet article de blog: http://okfnlabs.org/blog/2012/09/10/wikipediajs-a-javascript-library-for-accessing-wikipedia-article-information.html
Le code de la bibliothèque JS peut être trouvé ici: https://github.com/okfn/wikipediajs/blob/master/wikipedia.js
la source
Le
abstract.xml.gz
vidage ressemble à celui que vous voulez.la source
Si vous cherchez simplement le texte que vous pouvez ensuite diviser mais que vous ne voulez pas utiliser l'API, jetez un œil à en.wikipedia.org/w/index.php?title=Elephant&action=raw
la source
Mon approche était la suivante (en PHP):
$utf8html
peut avoir besoin d'un nettoyage supplémentaire, mais c'est essentiellement toutla source
J'ai essayé la solution de @Michael Rapadas et @ Krinkle mais dans mon cas j'ai eu du mal à trouver des articles en fonction de la capitalisation. Comme ici:
https://en.wikipedia.org/w/api.php?format=json&action=query&prop=extracts&exintro=&exsentences=1&explaintext=&titles=Led%20zeppelin
Remarque j'ai tronqué la réponse avec
exsentences=1
Apparemment, la "normalisation du titre" ne fonctionnait pas correctement:
Je sais que j'aurais pu régler facilement le problème de la capitalisation, mais il y avait aussi l'inconvénient de devoir convertir l'objet en tableau.
Donc, parce que je voulais vraiment le tout premier paragraphe d'une recherche bien connue et définie (aucun risque de récupérer des informations à partir d'un autre article), je l'ai fait comme ceci:
https://en.wikipedia.org/w/api.php?action=opensearch&search=led%20zeppelin&limit=1&format=json
Notez que dans ce cas j'ai fait la troncature avec
limit=1
Par ici:
Mais nous devons continuer à faire attention à la capitalisation de notre recherche.
Plus d'informations: https://www.mediawiki.org/wiki/API:Opensearch
la source