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

R语言爬取谷歌图片时image_urls为空的解决方法咨询

解决谷歌图片爬取时image_urls为空的问题

核心原因

谷歌图片页面自带反爬机制,直接用read_html请求会被识别为非浏览器访问,返回的页面结构和实际浏览器展示的不一致;同时当前页面的图片URL存储字段已发生变化,.rg_i元素的data-src不再是有效源地址字段。

具体解决步骤

1. 模拟浏览器请求,绕过反爬拦截

使用httr包添加浏览器请求头,避免被谷歌拦截:

library(rvest)
library(httr)

# 构造模拟Chrome浏览器的请求头
headers <- add_headers(
  "User-Agent" = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/118.0.0.0 Safari/537.36"
)

# 发送请求并解析页面
page <- GET("https://www.google.com/search?q=Djeco%20DD04490%20image&tbm=isch&tbs=isz:lt,islt:0.5", headers) %>% 
  content("text") %>% 
  read_html()

2. 调整选择器与URL提取字段

当前谷歌图片的原图地址通常存储在img.rg_i标签的data-iurl属性中,调整提取逻辑:

# 提取有效图片URL并过滤空值
image_urls <- page %>% 
  html_nodes("img.rg_i") %>% 
  html_attr("data-iurl") %>% 
  na.omit()

如果data-iurl取不到值,可尝试提取src属性(返回的是缩略图地址):

thumb_urls <- page %>% 
  html_nodes("img.rg_i") %>% 
  html_attr("src") %>% 
  na.omit()

3. 获取更多图片(可选)

谷歌图片默认每页加载20张,可通过URL的start参数分页获取更多结果:

# 获取第21-40张图片
page_2 <- GET("https://www.google.com/search?q=Djeco%20DD04490%20image&tbm=isch&tbs=isz:lt,islt:0.5&start=20", headers) %>% 
  content("text") %>% 
  read_html()

image_urls_2 <- page_2 %>% 
  html_nodes("img.rg_i") %>% 
  html_attr("data-iurl") %>% 
  na.omit()

# 合并所有URL
all_image_urls <- c(image_urls, image_urls_2)

4. 批量下载图片示例

拿到有效URL后,用download.file批量保存:

# 创建存储文件夹
dir.create("djeco_images", showWarnings = FALSE)

# 循环下载,捕获异常避免中断
for (i in seq_along(all_image_urls)) {
  tryCatch({
    download.file(
      url = all_image_urls[i],
      destfile = file.path("djeco_images", paste0("djeco_", i, ".jpg")),
      mode = "wb",  # 二进制模式确保图片完整性
      quiet = TRUE
    )
  }, error = function(e) {
    message(paste("下载第", i, "张图片失败:", e$message))
  })
}

注意事项

  • 谷歌反爬机制会频繁更新,若上述选择器失效,可通过浏览器开发者工具(F12)查看当前页面的图片元素属性,调整提取逻辑。
  • 控制请求频率,避免短时间内发送大量请求导致IP被封禁。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.14 09:01:12