如何为物种页面下载维基百科图像
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
我经常想要生物体的图像来补充数据集,如果我能拿出一个物种图像,比如宽吻海豚,给定属和物种,那就太好了。然后,我会在类似于 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