2013-11-23 3 views
9

Ich versuche, einen zufälligen Artikel aus der WikiMedia API zu ziehen, aber mein Code scheint nur Seiten Benutzer Diskussion ...Zufälliger Artikel API-Aufruf gibt Benutzer Diskussionsseiten zurück?

$(document).ready(function(){ 
    $.getJSON("http://en.wikipedia.org/w/api.php?action=query&generator=random&prop=extracts&exchars=500&format=json&callback=?", function (data) { 
    console.log(data.query.pages); 
    }); 
}); 

Ich las zu greifen, dass zieht einen zufälligen Artikel „Generator random =“, aber das scheint nicht der Fall zu sein. Wie bekomme ich es wie geplant?

Antwort

14

Wenn Sie nur Seiten im Namespace 0 abrufen möchten, müssen Sie den Parameter rnnamespace angeben. Und da Sie list=random als Generator verwenden sind, ist es als grnnamespace geschrieben:

+0

@Ilmari Vielen Dank für die Bearbeitung. – svick

+1

Das ist ziemlich genial ... Ich habe das nicht in der MediaWiki API Referenz gefunden. Ich habe meinen Kommentar entfernt, dass es unmöglich war und verknüpfte Ihre Antwort. – mc10

+0

Super! Die API gab eine Warnung über den Namespace zurück, aber ich dachte nicht, dass das das Problem war. Diese Antwort stattdessen für zukünftige Leser akzeptieren. – theintellects

1

Mit der API können Sie keine zufälligen Seiten direkt abrufen. Der Zufallsgenerator erhält derzeit zufällige Seiten von beliebigen Namensraum.EDIT: Ich stehe korrigiert; anscheinend können Sie durch einen Parameter, wie svick mentions in their answer übergeben. Ich werde jedoch meine ursprüngliche Antwort unten lassen.

Wie wäre es mit zwei API-Aufrufe?

zunächst eine Aufforderung, eine Liste von zufälligen Seiten zu greifen:

https://en.wikipedia.org/w/api.php?action=query&list=random&rnnamespace=0&rnlimit=5&format=json 

einstellen rnlimit Parameter auf, wie viele Seiten, die Sie wollen.

die wiki-Quelle zu erhalten, verwenden Sie die folgende (als Ersatz für TITLE1, TITLE2 etc. mit Ihrem tatsächlichen Titel):

https://en.wikipedia.org/w/api.php?action=query&titles=TITLE1|TITLE2&prop=revisions&rvprop=content&format=json 

Für eine HTML-Kopie der Seiten, verwenden Sie die folgenden (als Ersatz für Titel mit Ihre eigentliche Titel, und den Aufruf der API wiederholt):

https://en.wikipedia.org/w/api.php?action=parse&page=TITLE&prop=text&format=json 

natürlich könnte es nur einfacher sein Special:Random direkt anrufen und Bildschirm-Kratz:

https://en.wikipedia.org/wiki/Special:Random 
+0

Danke, ich werde geben, dass ein Versuch! – theintellects

+3

"Die API erlaubt dir nicht, zufällige Seiten direkt zu bekommen" Das ist falsch, siehe meine Antwort. – svick

Verwandte Themen