2011-05-23 15 views
8

¿Hay algún paquete para R que permita consultar Wikipedia (probablemente utilizando Mediawiki API) para obtener una lista de artículos disponibles relevantes para dicha consulta, así como para importar artículos seleccionados para minería de texto?¿Cómo acceder a Wikipedia desde R?

+0

Puede encontrar lo siguiente útil: http://www.ragtag.info/2011/feb/10/processing-every-wikipedia-article/ – James

Respuesta

5

Utilice el paquete RCurl para recuperar información, y los paquetes XML o RJSONIO para analizar la respuesta.

Si está detrás de un proxy, establezca sus opciones.

opts <- list(
    proxy = "136.233.91.120", 
    proxyusername = "mydomain\\myusername", 
    proxypassword = 'whatever', 
    proxyport = 8080 
) 

utilizar la función getForm acceder a the API.

search_example <- getForm(
    "http://en.wikipedia.org/w/api.php", 
    action = "opensearch", 
    search = "Te", 
    format = "json", 
    .opts = opts 
) 

Analizar los resultados.

fromJSON(rawToChar(search_example)) 
+0

Tengo problemas con el uso de esto para algunos términos de búsqueda, pero sospecho que es un problema con la red en la que estoy. Necesito voluntarios para verificar el código de muestra con diferentes cadenas en el parámetro 'search'. –

9

Hay WikipediR, 'Una envoltura API MediaWiki en I'

library(devtools) 
install_github("Ironholds/WikipediR") 
library(WikipediR) 

Incluye las siguientes funciones:

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" 

aquí está en uso, consiguiendo los detalles de contribución y de usuario detalles para un grupo de usuarios:

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)) 
Cuestiones relacionadas