如何修改R脚本以下载维基百科物种信息框中的高清原图
解决维基百科物种图片下载低画质问题
你的脚本当前获取的是维基百科的缩略图链接,这类链接包含/thumb/路径和尺寸参数(比如/300px-xxx.jpg),画质被压缩。要获取原始高清图,需要对提取到的URL做针对性修改:
核心修改逻辑
- 移除URL中的
/thumb/路径段 - 删除尺寸参数(即最后一个
/到文件名后缀前的内容,比如300px-)
修改后的完整脚本
library(rvest) # 确保已安装并加载rvest包 # 下载维基百科高清物种图片的函数 download_wikipedia_image <- function(bird_name) { # 构造物种维基百科页面链接 wikipedia_url <- paste0("https://en.wikipedia.org/wiki/", gsub(" ", "_", bird_name)) # 读取页面HTML内容 page <- read_html(wikipedia_url) # 提取信息框中的第一张图片链接 image_src <- page %>% html_nodes("table.infobox img") %>% html_attr("src") %>% head(1) if (!is.na(image_src)) { # 将缩略图链接转换为原始高清图链接 raw_image_url <- paste0("https:", image_src) # 移除/thumb/路径 raw_image_url <- gsub("/thumb/", "", raw_image_url) # 删除尺寸参数部分 raw_image_url <- sub("/[^/]+(?=\\.[a-z]+$)", "", raw_image_url, perl = TRUE) # 构造带正确后缀的保存路径 file_ext <- tools::file_ext(raw_image_url) save_path <- paste0("BIRDPHOTO/", gsub(" ", "_", bird_name), ".", file_ext) # 下载图片(mode="wb"确保二进制文件不损坏) download.file(raw_image_url, save_path, mode = "wb") cat("已下载高清图:", bird_name, "\n") } else { cat("未找到物种图片:", bird_name, "\n") } } # 创建图片保存目录(不存在则新建) dir.create("BIRDPHOTO", showWarnings = FALSE) # 示例物种列表 bird_names <- c("Prunella modularis", "Myiopsitta monachus", "Pyrrhura perlata", "Tyto alba", "Panurus biarmicus", "Merops apiaster") # 批量执行下载 for (bird_name in bird_names) { download_wikipedia_image(bird_name) } cat("所有下载任务完成。\n")
关键细节说明
- 链接转换示例:
- 原缩略图链接:
https://upload.wikimedia.org/wikipedia/commons/thumb/8/8a/Bubo_bubo_01.jpg/300px-Bubo_bubo_01.jpg - 转换后原始链接:
https://upload.wikimedia.org/wikipedia/commons/8/8a/Bubo_bubo_01.jpg
- 原缩略图链接:
- 动态后缀适配:用
tools::file_ext()自动识别原始图片格式,避免强制保存为jpg导致格式错误 - 二进制下载模式:添加
mode = "wb"参数,保证图片这类二进制文件下载后不会出现损坏
内容的提问来源于stack exchange,提问作者Fruuutz
相关产品推荐
相关产品推荐

