2011-10-03 17 views
20

Gli articoli di Wikipedia possono avere modelli di Infobox. Con la seguente chiamata posso ottenere la prima sezione di un articolo che include Infobox.Come ottenere Infobox da un articolo di Wikipedia da parte dell'API Mediawiki?

http://en.wikipedia.org/w/api.php?action=parse&pageid=568801&section=0&prop=wikitext 

Quello che voglio è una query che restituirà solo i dati di Infobox. È possibile?

+1

Possibile duplicato [Ottenere sezione infobox di Wikipedia] (http://stackoverflow.com/questions/3312346/getting-the-infobox-section-of-wikipedia) – Nemo

+0

Sede [Come estrarre informazioni da una infobox di Wikipedia?] (https://stackoverflow.com/questions/33862336/how-to-extract-information-from-a-wikipedia-infobox) per una risposta più dettagliata. – Tgr

risposta

7

Invece di analizzare personalmente le tue informazioni, il che è piuttosto complicato, dai uno sguardo allo DBPedia, che ha informazioni su Wikipedia estrapolate come oggetti di database.

+0

ottimo suggerimento! Grazie! Non reinventare la ruota analizzando da solo la wikimedia api. – ArisRe82

+1

Ciò, tuttavia, fornirà tutte le relazioni a una particolare entità ma non ti dirà quali campi esistono nella casella informazioni – MFARID

23

Puoi farlo con una chiamata URL all'API Wikipedia in questo modo:

http://en.wikipedia.org/w/api.php?action=query&prop=revisions&rvprop=content&format=xmlfm&titles=Scary%20Monsters%20and%20Nice%20Sprites&rvsection=0 

sostituire la sezione titles= con il titolo della pagina, e format=xmlfm-format=json se si desidera che l'articolo in formato JSON.

2

Sulla risposta @ di Garry, si può avere wikipedia analizzare la casella informazioni in HTML per voi tramite il parametro rvparse in questo modo:

http://en.wikipedia.org/w/api.php?action=query&prop=revisions&rvprop=content&format=json&titles=Scary%20Monsters%20and%20Nice%20Sprites&rvsection=0&rvparse 

Nota che né metodo restituirà solo casella informazioni. Ma dal contenuto html, puoi estrarre (tramite, ad esempio, beautifulsoup) lo table con la classe infobox.

In Python, è fare qualcosa di simile alla seguente

resp = requests.get(url).json() 
page_one = next(iter(resp['query']['pages'].values())) 
revisions = page_one.get('revisions', []) 
html = next(iter(revisions[0].values())) 
# now parse the html 
1

Se la pagina ha il diritto infobox lato, quindi utilizzare questo URL per ottenere in forma txt. Il mio esempio sta usando l'elemento Hydrogen. Tutto quello che devi fare è sostituire "Hydrogen" con il tuo titolo.

https://en.wikipedia.org/w/index.php?action=raw&title=Template:Infobox%20hydrogen

Se siete alla ricerca per l'uso formato JSON questo URL, ma la sua non abbastanza.

https://en.wikipedia.org/w/api.php?action=parse&page=Template:Infobox%20hydrogen&format=json

Problemi correlati