Как получить доступ к Википедии из R? - PullRequest
8 голосов
/ 23 мая 2011

Существует ли какой-либо пакет для R, который позволяет запрашивать Википедию (скорее всего, с помощью Mediawiki API), чтобы получить список доступных статей, относящихся к такому запросу, а также импортировать выбранные статьи для интеллектуального анализа текста?

Ответы [ 2 ]

11 голосов
/ 04 июня 2014

Существует WikipediR, 'Оболочка API MediaWiki в R'

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

Включает в себя следующие функции:

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"  

Здесь он используется, получая сведения о вкладе и сведения о пользователе для группы пользователей:

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) )
6 голосов
/ 23 мая 2011

Используйте пакет RCurl для получения информации и пакеты XML или RJSONIO для анализа ответа.

Если вы находитесь за прокси-сервером, задайте параметры.

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

Используйте функцию getForm для доступа к API .

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

Анализ результатов.

fromJSON(rawToChar(search_example))
...