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

如何通过chromote加载网页后使用rvest进行网页数据抓取?

解决Chromote + rvest 网页抓取的问题

你之前的代码无法运行,核心问题是b$DOM$getDocument()返回的是DOM节点的结构化数据,不是rvest能直接解析的纯HTML文本。要让两者配合工作,需要先从Chromote中提取完整的页面HTML源码,再交给rvest处理。

以下是可行的完整代码:

library(chromote)
library(rvest)

# 初始化Chromote会话
b <- ChromoteSession$new()
# 导航到目标网站并等待页面加载完成(必须加这一步,否则会拿到未加载完全的内容)
b$Page$navigate("https://www.ooir.org/")
b$Page$wait_for_navigation()

# 通过JS获取页面完整的HTML源码
page_html <- b$Runtime$evaluate("document.documentElement.outerHTML")$result$value

# 将HTML字符串转换成rvest可处理的文档对象
html_doc <- read_html(page_html)

# 现在可以正常用rvest提取内容了
links <- html_doc %>% html_nodes("a")
# 查看前几个链接示例
head(links)

关键细节说明:

  • 必须调用wait_for_navigation():navigate是异步操作,直接获取HTML会拿到未加载完成的页面内容,导致后续提取出错。
  • 用Runtime$evaluate()获取HTML:通过执行JS代码document.documentElement.outerHTML,可以拿到整个页面的完整HTML代码,比DOM$getDocument()的返回结果更适配rvest的解析逻辑。
  • read_html()是rvest的核心转换函数:它能把纯HTML字符串转换成可操作的文档对象,之后就能用html_nodes()、html_text()等方法完成元素提取。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.21 02:53:11