Как получить доступ к Википедии из R?
Существует ли какой-либо пакет для R, который позволяет запрашивать Wikipedia (скорее всего, используя Mediawiki API), чтобы получить список доступных статей, относящихся к такому запросу, а также импортировать выбранные статьи для анализа текста?
2 ответа:
Используйте пакет
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))
Есть
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) )