我经常想要有机体的图像来补充数据集,如果我可以为一个宽吻海豚和物种提取物种形象,比如宽吻海豚,那将会很棒。然后我会在类似于this one的K12教育闪亮应用程序中使用此图像,以便学生探索数据集。我找到了一种方法来获取带有WikipediR
包的URL和一些页面信息,但我无法弄清楚如何在侧边栏中提取图像的URL。
require(WikipediR)
page_info("en","wikipedia",page="Tursiops truncatus")
我知道有一种方式(即here),但我真的不明白如何在R中完成这项工作。
答案 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