You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在R语言中从指定URL批量下载含*b13的JPEG文件

修正代码实现指定JPG文件下载

原代码存在的问题

  • 未解析网页提取目标链接,直接将网页URL当作数据框索引,逻辑错误
  • writeJPEG语法错误,参数格式不正确,文件名拼接未使用循环变量
  • 硬编码循环次数,未根据实际目标文件数量动态调整
  • 未筛选文件名包含b13的目标文件
  • 重复执行install.packages,未判断包是否已安装

修正后的完整代码

# 安装并加载所需包(仅在未安装时执行安装)
if (!require("jpeg")) install.packages("jpeg")
library(jpeg)
if (!require("rvest")) install.packages("rvest")
library(rvest)
if (!require("here")) install.packages("here")
library(here)

# 目标网页URL
base_url <- "https://www.data.jma.go.jp/mscweb/data/himawari/list_ha2.html"
# 指定保存文件的目标文件夹
target_dir <- here("Q:/R_himawari")
# 如果目标文件夹不存在则创建
if (!dir.exists(target_dir)) dir.create(target_dir, recursive = TRUE)

# 解析网页,提取所有链接
page <- read_html(base_url)
all_links <- page %>% html_elements("a") %>% html_attr("href")
# 筛选文件名包含"b13"的JPG文件链接
target_links <- all_links[grepl("b13.*\\.jpg$", all_links)]
# 拼接完整的下载URL(处理相对路径)
target_full_links <- paste0("https://www.data.jma.go.jp/mscweb/data/himawari/", target_links)

# 打印找到的目标文件名
cat("筛选出的目标文件:\n")
print(target_links)

# 循环下载并保存文件
for (i in seq_along(target_full_links)) {
  current_link <- target_full_links[i]
  current_filename <- target_links[i]
  save_path <- file.path(target_dir, current_filename)
  
  # 执行下载
  download.file(current_link, save_path, mode = "wb", quiet = FALSE)
  
  # 输出下载状态
  if (file.exists(save_path)) {
    cat("已成功保存:", current_filename, "\n")
  } else {
    cat("下载失败:", current_filename, "\n")
  }
}

代码关键说明

  • 网页解析:使用rvest包提取网页中的所有链接,通过正则表达式精准筛选含b13的JPG文件
  • 路径处理:用file.path拼接文件路径,保证跨平台兼容性;提前创建目标文件夹避免路径不存在报错
  • 循环逻辑:根据实际筛选出的链接数量动态循环,保留原文件名便于后续识别文件
  • 包管理:用require判断包是否已安装,避免重复执行安装操作

内容的提问来源于stack exchange,提问作者Biraj kandel

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.23 21:37:19