如何下载物种页面的维基百科图像

时间:2017-09-12 20:43:55

标签: r wikipedia-api

我经常想要有机体的图像来补充数据集,如果我可以为一个宽吻海豚和物种提取物种形象,比如宽吻海豚,那将会很棒。然后我会在类似于this one的K12教育闪亮应用程序中使用此图像,以便学生探索数据集。我找到了一种方法来获取带有WikipediR包的URL和一些页面信息,但我无法弄清楚如何在侧边栏中提取图像的URL。

require(WikipediR)
page_info("en","wikipedia",page="Tursiops truncatus")

我知道有一种方式(即here),但我真的不明白如何在R中完成这项工作。

1 个答案:

答案 0 :(得分:3)

感谢Stedy的建议,我找到了解决方案。请注意,R有2个类似命名的Wikipedia接口包。这个包使用WikipediR,而不是WikipediaR。

require(WikipediR); require(rvest)

#titles= vector of page name(s)
#res= desired width in pixels (220 px thumbnail by default)
#savedest= save destination (w terminal '/'); wd by default

getwikipic<-function(titles,res,savedest){
    if(missing(res)){res=220}
    if(missing(savedest)){savedest=NA}
  lapply(titles, function (ttl,...){
  d<-page_info("en","wikipedia",page=ttl,clean_response=T)
  url<-d[[1]]$fullurl
  wikipage<-html_session(url)
  imginfo<-wikipage %>% html_nodes("tr:nth-child(2) img")
  img.url<- imginfo[1] %>% html_attr("src")
  img.url<-paste0("https:",img.url)
  if(is.na(savedest)){
    savefilename<-paste0(ttl,".jpg")
    }else{savefilename<-paste0(savedest,ttl,".jpg")}

  if(res!=220){img.url<-gsub(220,res,img.url)}  

  download.file(img.url,savefilename)
  return(paste0("orig.file: ",basename(img.url)))#tell user original filename (or error)

  },res,savedest)#End lapply
}#End function

或者,我使用代码here创建了一个GitHub仓库。您可以在R。

中简单地获取和运行它
devtools::source_url("https://raw.githubusercontent.com/drwilkins/getwikipic/master/getwikipic.R")

titles<-c("numbat")
getwikipic(titles,1024)

将此下载到您的工作目录  pic