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

如何用rvest从Flickr获取首张图片?解决代码返回NA问题

解决Flickr搜索页图片爬取返回NA的问题

问题根源

Flickr搜索结果的图片是动态加载的,read_html()只能抓取页面初始的静态HTML,此时目标元素还未被JavaScript渲染出来,所以无论用html_node还是html_element都找不到对应内容,返回NA。

解决方案:用RSelenium模拟浏览器渲染页面

RSelenium可以模拟真实浏览器加载页面,等待JS渲染完成后再抓取内容,具体步骤如下:

  1. 安装并加载所需包:
install.packages(c("RSelenium", "rvest", "dplyr"))
library(RSelenium)
library(rvest)
library(dplyr)
  1. 启动Chrome浏览器驱动(需确保Chrome版本与驱动版本匹配):
driver <- rsDriver(browser = "chrome", port = 4567L)
remote_driver <- driver[["client"]]
  1. 访问目标页面并等待渲染完成:
remote_driver$navigate("https://www.flickr.com/search/?text=cat")
# 根据网络情况调整等待时间,确保页面加载完成
Sys.sleep(3)
  1. 获取渲染后的页面源码,提取第一张图片的地址:
page_source <- remote_driver$getPageSource()[[1]]
image_src <- read_html(page_source) %>%
  html_element(".photo-list-photo-container img") %>%
  html_attr("src")

print(image_src)
  1. 操作完成后关闭浏览器驱动:
remote_driver$close()
driver$server$stop()

替代思路

如果不想用浏览器模拟工具,也可以尝试分析Flickr的后台API接口,直接请求接口获取图片数据,但需要处理接口的认证逻辑,相对复杂一些。

内容的提问来源于stack exchange,提问作者Gioi Hoc Sinh

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 08:10:21