是否需要使用RSelenium下载指定页面PDF?R初学者使用webdriver难度高吗?
问题解答
是否需要使用webdriver
你访问的目标页面内容是JavaScript异步渲染的,rvest仅支持抓取静态HTML源码,初始请求返回的源码里没有你要找的PDF相关节点,所以CSS selector无法匹配到对应元素是正常现象。这种场景确实需要使用支持JS渲染的工具,也就是webdriver相关的R组件来完成。
R初学者使用webdriver实现需求的难度
整体难度很低,目前R生态里已经有封装非常完善的相关工具,不需要你深入掌握webdriver的底层逻辑,按步骤调用封装好的函数即可:
- 优先推荐使用
chromote包,无需额外安装Selenium服务,只要你的设备上安装了Chrome/Edge Chromium内核浏览器即可运行 - 核心操作步骤代码示例:
# 安装依赖包 install.packages(c("chromote", "rvest")) # 启动浏览器实例 b <- chromote::ChromoteSession$new() # 加载目标页面 b$Page$navigate("https://northernbrucepeninsula.civicweb.net/filepro/documents/50416") # 等待页面渲染完成,可根据网络情况调整等待时长 Sys.sleep(3) # 提取页面渲染后的完整HTML html <- b$Runtime$evaluate("document.documentElement.outerHTML")$result$value # 接下来就可以用rvest的CSS selector逻辑处理上面的html对象,提取PDF下载链接
- 提取到PDF链接后,如果是相对路径要拼接主域名,之后直接用
download.file()函数即可下载到本地,再用pdftools处理即可
小提示:操作时注意控制请求频率,避免短时间内大量请求给目标服务器造成压力。
内容的提问来源于stack exchange,提问作者paulson
相关产品推荐
相关产品推荐

