使用R语言批量爬取多页面图片URL遇阻求助
解决R语言批量爬取多页面图片URL的问题
你的代码问题在于每次循环都直接覆盖了存储结果的变量,导致最终只保留了最后一页的图片URL。要实现多页面数据的累积,需要先初始化一个容器(比如列表)来存储每一页的结果,再在循环中逐步添加。
修改后的代码
library("rvest") library("ralger") # 初始化空列表,用于存储所有页面的图片URL all_image_urls <- list() for(page_result in 1:100){ # 构造当前页的URL current_link <- paste0("https://www.istockphoto.com/search/2/image?alloweduse=availableforalluses&mediatype=photography&phrase=man&page=", page_result) # 获取当前页的图片URL page_urls <- images_preview(current_link) # 将当前页结果存入列表 all_image_urls[[page_result]] <- page_urls # 关键:添加请求延迟,避免短时间内大量请求触发网站反爬机制 Sys.sleep(1) } # 合并所有页面的结果为一个数据框(适配images_preview返回的数据格式) final_image_data <- do.call(rbind, all_image_urls) # 如果需要提取纯URL向量,可执行: # final_url_vec <- unlist(all_image_urls)
关键说明
- 用
list()初始化all_image_urls,确保每一页的结果都能被单独存储,不会被覆盖 - 使用
all_image_urls[[page_result]] <- page_urls将当前页数据添加到列表中,而不是直接赋值 - 添加
Sys.sleep(1)是为了降低请求频率,避免被网站判定为恶意爬虫而封禁IP
内容的提问来源于stack exchange,提问作者Johnathan
相关产品推荐
相关产品推荐

