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

使用R语言进行网页爬虫时无法获取目标页面的可下载链接

你遇到的是前端动态渲染类网站的共性问题:这类站点的核心内容不会内置在初始HTML源码中,需要浏览器加载完成后执行JS脚本从后端拉取数据再渲染到页面,所以仅支持静态HTML解析的rvest只能抓取到初始加载的页头、页脚内容。

解决方案

方案1:使用支持JS渲染的爬取工具

推荐用chromote包,无需手动配置驱动,仅依赖本地安装的Chrome/Edge浏览器即可实现页面完整渲染,示例代码如下:

library(chromote)
library(rvest)

# 启动浏览器会话
b <- ChromoteSession$new()
# 跳转目标页面
b$Page$navigate("https://b2share.eudat.eu/records/8d47a255ba5749e3ac169527e22f0068")
# 等待页面渲染完成(可根据网络情况调整等待时长,也可替换为等待指定元素加载的逻辑,稳定性更高)
Sys.sleep(2)
# 获取渲染后的完整HTML源码
full_html <- b$Runtime$evaluate("document.documentElement.outerHTML")$result$value
# 关闭浏览器会话
b$close()

# 用rvest正常解析渲染后的内容
read_html(full_html) %>% 
  html_nodes("a")

方案2:直接调用后端数据接口(效率更高)

这类动态站点的内容都通过统一的后端接口返回,你可以通过浏览器开发者工具抓包获取接口地址:

  • 打开目标页面,按F12调出开发者工具,切换到「网络」标签,筛选「XHR/ fetch」类型的请求
  • 刷新页面后即可找到拉取记录元数据的接口,返回格式为JSON,你需要的.xlsx文件下载链接一般在返回结果的files字段中
  • 直接用httr包请求该接口解析JSON即可,无需渲染页面,速度更快、稳定性更高

如果需要批量爬取多个记录的文件,方案2的接口调用方式效率远高于页面渲染方案。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 05:36:03