2013-11-23 13 views
9

Sto cercando di tirare un articolo casuale dalla API Wikimedia, ma il mio codice sembra di afferrare solo le pagine di discussione utente ...L'articolo a caso La chiamata API sta restituendo le pagine di discussione degli utenti?

$(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); 
    }); 
}); 

ho letto che "generatore casuale =" tira un articolo casuale, ma non sembra essere il caso. Come posso farlo funzionare come previsto?

risposta

14

Se si desidera ottenere solo pagine nello spazio dei nomi 0, è necessario specificare il parametro rnnamespace. E dal momento che si sta utilizzando list=random come un generatore, è scritto come grnnamespace:

+0

@Ilmari Grazie per la modifica. – svick

+1

È piuttosto ingegnoso ... Non l'ho trovato nel riferimento all'API MediaWiki. Ho rimosso il mio commento che era impossibile e ho collegato la tua risposta. – mc10

+0

Fantastico! L'API ha restituito qualche avvertimento su namespace ma non pensavo che fosse il problema. Accettando questa risposta, invece, per i futuri lettori. – theintellects

1

L'API non consente di ottenere direttamente pagine a caso; il generatore casuale riceve attualmente pagine a caso da qualsiasi spazio dei nomi.MODIFICA: Sono stato corretto; apparentemente puoi passare un parametro grnamespace, come svick mentions in their answer. Comunque lascerò la mia risposta originale qui sotto.

Come si effettuano due chiamate API?

In primo luogo, effettuare una chiamata a prendere un elenco di pagine casuali:

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

regolare il parametro rnlimit in base a quante pagine si desidera.

Per ottenere risultati wiki-source, utilizzare il seguente (sostituendo TITLE1, TITLE2, ecc con i tuoi titoli reali):

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

Per una copia HTML delle pagine, utilizzare il seguente titolo (sostituzione con il titolo vero e proprio, e chiamando ripetutamente l'API):

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

Naturalmente, potrebbe essere solo più facile chiamare Special:Random direttamente, e lo schermo-raschiare:

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

Grazie, darò che una prova! – theintellects

+3

"L'API non ti permette di ottenere direttamente pagine a caso" È sbagliato, vedi la mia risposta. – svick

Problemi correlati