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

How to download a Wikipedia image for a species page

我经常想要生物体的图像来补充数据集,如果我能拿出一个物种图像,比如宽吻海豚,给定属和物种,那就太好了。然后,我会在类似于 this one 的 K12 教育 Shiny App 中使用此图像,供学生探索数据集。我找到了一种使用 WikipediR 包获取 URL 和一些页面信息的方法,但我不知道如何为侧边栏中的图像提取 URL。

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

我知道有一种方法(即 here),但我不太明白如何在 R 中实现它。

感谢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