使用R语言ralger库爬取图片时遇URL scheme不支持错误求助
解决ralger库爬取图片时"scheme not supported in URL"错误
问题原因
报错里的图片URL格式为//upload.wikimedia.org/wikipedia/commons/thumb/3/38/Robert_Jardillier_1932.jpg/220px-Robert_Jardillier_1932.jpg,这种省略了http/https协议头的相对URL,R的download.file函数无法识别,导致爬取失败。
解决方案
方案1:手动处理URL后下载
先获取图片URL列表,补全协议头后再手动下载:
library(ralger) setwd("C:/images") link <- "https://fr.wikipedia.org/wiki/Robert_Jardillier" # 获取目标页面所有jpg格式图片的URL img_urls <- get_images(link, extn = "jpg") # 给每个URL补全https协议头 img_urls_full <- paste0("https:", img_urls) # 循环下载图片 for (url in img_urls_full) { download.file(url, destfile = basename(url), mode = "wb") }
方案2:临时修改ralger的images_scrap函数
通过trace函数临时修改images_scrap内部的URL处理逻辑,自动补全协议头:
library(ralger) # 编辑images_scrap函数的内部代码 trace(images_scrap, edit = TRUE)
在弹出的编辑器中,找到处理img_urls_f的代码段,添加一行补全协议的代码:
img_urls_f <- paste0("https:", img_urls_f)
修改后保存,再运行原有的images_scrap调用即可正常爬取。
内容的提问来源于stack exchange,提问作者Rodrigo Badilla
相关产品推荐
相关产品推荐

