Esiste un pacchetto per R che consente di eseguire query su Wikipedia (molto probabilmente utilizzando l'API Mediawiki) per ottenere un elenco di articoli disponibili relativi a tale query, nonché importare articoli selezionati per l'estrazione di testo?Come accedere a Wikipedia da R?
risposta
Utilizzare il pacchetto RCurl
per informazioni di reintegro e i pacchetti XML
o RJSONIO
per analizzare la risposta.
Se si è dietro un proxy, impostare le opzioni.
opts <- list(
proxy = "136.233.91.120",
proxyusername = "mydomain\\myusername",
proxypassword = 'whatever',
proxyport = 8080
)
utilizzare la funzione getForm
per accedere the API.
search_example <- getForm(
"http://en.wikipedia.org/w/api.php",
action = "opensearch",
search = "Te",
format = "json",
.opts = opts
)
Analizzare i risultati.
fromJSON(rawToChar(search_example))
Ho problemi con l'utilizzo di questo per alcuni termini di ricerca, ma ho il sospetto che è un problema con la rete in cui mi trovo. Ho bisogno di volontari per verificare il codice di esempio con stringhe diverse nel parametro 'search'. –
C'è WikipediR
, 'Un wrapper MediaWiki API in R'
library(devtools)
install_github("Ironholds/WikipediR")
library(WikipediR)
Esso comprende le seguenti funzioni:
ls("package:WikipediR")
[1] "wiki_catpages" "wiki_con" "wiki_diff" "wiki_page"
[5] "wiki_pagecats" "wiki_recentchanges" "wiki_revision" "wiki_timestamp"
[9] "wiki_usercontribs" "wiki_userinfo"
Qui è in uso, ottenendo i particolari contributi e utenti dettagli per un gruppo di utenti:
library(RCurl)
library(XML)
# scrape page to get usernames of users with highest numbers of edits
top_editors_page <- "http://en.wikipedia.org/wiki/Wikipedia:List_of_Wikipedians_by_number_of_edits"
top_editors_table <- readHTMLTable(top_editors_page)
very_top_editors <- as.character(top_editors_table[[3]][1:5,]$User)
# setup connection to wikimedia project
con <- wiki_con("en", project = c("wikipedia"))
# connect to API and get last 50 edits per user
user_data <- lapply(very_top_editors, function(i) wiki_usercontribs(con, i))
# and get information about the users (registration date, gender, editcount, etc)
user_info <- lapply(very_top_editors, function(i) wiki_userinfo(con, i))
È possibile trovare quanto segue: http://www.ragtag.info/2011/feb/10/processing-every-wikipedia-article/ – James