R语言使用rvest抓取网页时Xpath无法识别动态表格问题求助
问题根因
- 你的推测正确,该网站汇率表为JavaScript动态渲染生成,初始静态HTML源码中不存在完整表格数据,仅支持静态内容抓取的
rvest无法识别到动态生成的DOM节点,因此返回空结果。
解决方案
推荐使用支持动态页面渲染的chromote包实现抓取,操作步骤如下:
- 首先安装依赖包:
install.packages("chromote") - 参考实现代码:
library(tidyverse) library(rvest) library(chromote) # 启动浏览器会话 b <- ChromoteSession$new() # 访问目标页面 b$Page$navigate("https://portal.vietcombank.com.vn/Personal/TG/Pages/ty-gia.aspx?devicechannel=default") # 等待页面动态内容加载完成,可根据自身网络情况调整等待时长 Sys.sleep(3) # 获取渲染完成的完整HTML源码 full_html <- b$Runtime$evaluate("document.documentElement.outerHTML")$result$value %>% read_html() # 关闭浏览器会话 b$close() # 提取目标汇率表格 exchange_rate_table <- full_html %>% html_nodes(xpath = "//*[@class = 'tbl-01 rateTable']") %>% html_table() %>% .[[1]] # 输出结果验证 print(exchange_rate_table)
- 运行前置要求:设备上已安装Chrome/Edge浏览器,
chromote会自动调用本地浏览器内核完成页面渲染。 - 注意事项:抓取时请控制请求频率,避免对目标站点服务器造成不必要的压力。
内容的提问来源于stack exchange,提问作者Kevin_Nguyen
相关产品推荐
相关产品推荐

