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

在R中使用RSelenium下载已提取网页图片的操作步骤咨询

RSelenium 图片资源提取下载操作步骤

依赖包未安装可先执行:install.packages(c("urltools", "httr"))

你已获取的Images_Extract是RSelenium返回的WebElement列表,按以下步骤操作即可完成下载:

  • 第一步:提取图片资源链接
    遍历元素列表提取图片链接,常规图片取src属性,懒加载图片替换为data-src属性即可:
    # 提取常规图片链接
    img_urls <- lapply(Images_Extract, function(item) item$getElementAttribute("src")[[1]])
    # 懒加载图片用这行替换上一行:
    # img_urls <- lapply(Images_Extract, function(item) item$getElementAttribute("data-src")[[1]])
    
    # 过滤无效空链接
    img_urls <- Filter(function(x) !is.null(x) && nchar(x) > 0, img_urls)
    
  • 第二步:处理相对路径链接(无相对路径可跳过)
    若提取到的是/xxx/xxx.jpg类的相对路径,需拼接当前页面域名转为可访问的绝对路径:
    library(urltools)
    # 获取当前页面根域名
    current_url <- remDr$getCurrentUrl()[[1]]
    domain_part <- paste0(url_parse(current_url)$scheme, "://", url_parse(current_url)$domain)
    
    # 批量拼接为绝对路径
    img_urls <- lapply(img_urls, function(x) {
      if (startsWith(x, "http")) return(x)
      return(paste0(domain_part, x))
    })
    
  • 第三步:批量下载图片到本地
    两种下载方式可选,带请求头的方式适配多数有反爬限制的站点:
    # 创建本地存储文件夹
    save_path <- "./download_images"
    dir.create(save_path, showWarnings = FALSE, recursive = TRUE)
    
    # 方式1:基础download.file下载,适配无反爬的公开站点
    for (i in seq_along(img_urls)) {
      save_name <- file.path(save_path, paste0("img_", i, ".jpg"))
      tryCatch({
        download.file(img_urls[[i]], destfile = save_name, mode = "wb")
      }, error = function(e) {
        message(paste0("第", i, "张图片下载失败: ", e$message))
      })
    }
    
    # 方式2:复用浏览器UA带请求头下载,适配有反爬限制的站点
    library(httr)
    # 获取当前浏览器的User-Agent,避免被反爬识别
    browser_ua <- remDr$executeScript("return navigator.userAgent;")[[1]]
    for (i in seq_along(img_urls)) {
      save_name <- file.path(save_path, paste0("img_", i, ".jpg"))
      tryCatch({
        GET(img_urls[[i]], user_agent(browser_ua), write_disk(save_name, overwrite = TRUE))
      }, error = function(e) {
        message(paste0("第", i, "张图片下载失败: ", e$message))
      })
    }
    
  • 特殊场景方案:图片链接加密无法直接访问时,可直接对元素截图保存
    for (i in seq_along(Images_Extract)) {
      save_name <- file.path(save_path, paste0("img_screenshot_", i, ".png"))
      Images_Extract[[i]]$screenshot(file = save_name)
    }
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 11:36:04