2009-06-08 4 views
59

J'essaie de savoir s'il y a une API de wikipedia (je pense que c'est lié au mediawiki?).Comment utiliser wikipedia api si elle existe?

Si oui, je voudrais savoir comment je dirais wikipedia pour me donner un article sur les new yorkes de york par exemple. Quelle serait l'URL REST pour cet exemple?

Tous les documents sur ce sujet semblent assez compliqués.

+5

Le "si elle existe" une partie est également couverte ici: http: // stackoverflow.com/questions/627594/is-there-a-wikipedia-api. Mais je pense que la partie "comment l'utiliser" est une question légitime ... en quelque sorte. – Jonik

+0

Il ya maintenant un paquet R qui accède à l'API Mediawiki (et donc Wikipedia), plus de détails et un exemple: http://stackoverflow.com/a/24027866/1036500 – Ben

Répondre

81

Vous avez vraiment vraiment besoin de passer un peu de temps à lire la documentation, car cela m'a pris un moment pour regarder et cliquez sur le lien pour le réparer. :/mais par sympathie je vais vous fournir un lien que peut-être vous pouvez apprendre à utiliser.

http://en.wikipedia.org/w/api.php?action=query&prop=revisions&titles=New_York_Yankees&rvprop=timestamp|user|comment|content

C'est la variabled vous cherchez à obtenir. Votre meilleur pari est de connaître la page que vous serez après et remplacer la partie de lien Wikipédia dans le titre par exemple:

http://en.wikipedia.org/wiki/New_York_Yankees [Prenez la partie après le wiki /]

->

http://en.wikipedia.org/w/api.php?action=query&prop=revisions&titles=New_York_Yankees&rvprop=timestamp|user|comment|content

[Placez-le dans la variable title de la requête GET.

L'URL ci-dessus peut être modifiée pour obtenir les différentes sections que vous voulez ou non. Alors lisez la documentation :)

+19

+1 pour un exemple réel, au lieu de simplement jeter des liens (même si l'exemple est aussi juste un lien ... :) – Jonik

+6

Un ENDROIT FANTASTIQUE pour commencer est avec le bac à sable wikipedia. Il peut vous aider à formater vos requêtes/requêtes: http://en.wikipedia.org/wiki/Special:ApiSandbox – LucianNovo

+2

Et si je ne connais pas la page en question? Comme si je voulais rechercher le groupe Iron Maiden? La page pourrait être "Iron Maiden", "Iron Maiden", "Iron Maiden Band". Comment puis-je rechercher cela? –

13

Voir http://www.mediawiki.org/wiki/API

Plus précisément, pour les Anglais Wikipédia, l'API est situé à http://en.wikipedia.org/w/api.php

+3

oui, je ne peux pas comprendre comment faire mon exemple après lire ça. des idées? – chris

+3

non, je ne peux sérieusement pas comprendre ce document. Je ne sais pas comment obtenir des données de page spécifiques en utilisant cette API. – chris

+3

Vous ne pouvez pas réellement. Pour obtenir la source de l'article brut, vous devez accéder aux articles de cette façon: http://www.mediawiki.org/w/index.php?title=API&action=raw – drdaeman

66

Les réponses ici m'ont aidé à trouver une solution, mais j'ai découvert plus d'informations dans le processus qui peuvent être utiles aux autres qui trouvent cette question. Je pense que la plupart des gens veulent simplement utiliser l'API pour obtenir rapidement du contenu sur la page. Voici comment je fais que:

révisions Utilisation:

//working url: 
http://en.wikipedia.org/w/api.php?action=query&prop=revisions&titles=Threadless&rvprop=content&format=json&rvsection=0&rvparse=1 

//Explanation 
//Base Url: 
http://en.wikipedia.org/w/api.php?action=query 

//tell it to get revisions: 
&prop=revisions 

//define page titles separated by pipes. In the example i used t-shirt company threadless 
&titles=whatever|the|title|is 

//specify that we want the page content 
&rvprop=content 

//I want my data in JSON, default is XML 
&format=json 

//lets you choose which section you want. 0 is the first one. 
&rvsection=0 

//tell wikipedia to parse it into html for you 
&rvparse=1 

en utilisant des extraits (mieux/plus facile pour ce que je fais)

//working url: 
http://en.wikipedia.org/w/api.php?action=query&prop=extracts&titles=Threadless&format=json&exintro=1 

//only explaining new parameters 
//instead of revisions, we'll set prop=extracts 
&prop=extracts 

//if we just want the intro, we can use exintro. Otherwise it shows all sections 
&exintro=1 

Toutes les informations exige la lecture à travers le La documentation API comme cela a été mentionné, mais j'espère que ces exemples aideront la majorité des gens qui viennent ici pour une solution rapide.

+0

La première URL de travail fournie vous permet également de récupérer l'infobox pour la page wiki! Merci –

+0

salut, est-il un moyen d'obtenir le texte brut de la description principale ?? Il est très difficile d'analyser réponses wikitext ou HTMl :(toute aide sera très appréciée s'il vous plaît. –

8

Si vous souhaitez extraire des données structurées de Wikipedia, vous pouvez envisager d'utiliser DBPedia http://dbpedia.org/

Il fournit des moyens d'interroger les données à l'aide de critères donnés à l'aide SPARQL et renvoie les données à partir de modèles de Listées analysables Wikipédia

Il y a quelques Bibliothèques SPARQL disponibles pour plusieurs plates-formes pour faciliter les requêtes

1

Wiki Parser convertit Wikipedia dumps en XML. C'est aussi assez rapide. Vous pouvez ensuite utiliser n'importe quel outil de traitement XML pour gérer les données des articles Wikipédia analysés.

2

est Ci-dessous un exemple de travail qui imprime la première phrase de Wikipédias Yankees de New York page à votre navigateur web console:

<!DOCTYPE html> 
</html> 
    <head> 
     <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.3/jquery.min.js"></script> 
    </head> 
    <body> 
     <script> 
      var wikiUrl = "http://en.wikipedia.org/w/api.php?action=opensearch&search=New_York_Yankees&format=json&callback=wikiCallbackFunction"; 

      $.ajax(wikiUrl, { 
       dataType: "jsonp", 
       success: function(wikiResponse) { 
        console.log(wikiResponse[2][0]); 
       } 
      }); 
     </script> 
    </body> 
</html> 

http://en.wikipedia.org/w/api.php est le point final pour votre URL. Vous pouvez voir comment structurer votre URL en visitant: http://www.mediawiki.org/wiki/API:Main_page

J'ai utilisé jsonp comme dataType pour autoriser les requêtes inter-sites. DAVANTAGE peuvent être trouvés ici: http://www.mediawiki.org/wiki/API:Cross-site_requests

Last but not least, assurez-vous de faire référence à l'API Jquery.ajax(): http://api.jquery.com/jquery.ajax/

Questions connexes