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

使用Rvest与XPath提取临床试验网页表格遇阻求助

解决Rvest抓取ClinicalTrials.gov历史表格的问题

问题分析

你用Chrome复制的XPath包含了ctg-card、ctg-history-changes-table这类动态生成的自定义HTML标签,这些标签是页面加载后通过JavaScript渲染出来的,而read_html获取的是服务器返回的初始静态HTML,根本不存在这些标签,所以XPath匹配不到目标元素,导致代码无法运行。

解决方案

改用避开动态标签的通用选择器,直接定位目标表格的父容器或表格本身,以下是修改后的代码:

library(rvest)

# 目标页面URL
url <- "https://clinicaltrials.gov/study/NCT05817110?tab=history"

# 获取静态HTML内容
webpage <- read_html(url)

# 方案1:提取页面所有表格后筛选目标表格
all_tables <- webpage %>% html_table(fill = TRUE)
# 查看表格结构后选择对应索引(该页面中历史版本表格是第2个)
table_data <- all_tables[[2]]

# 方案2:用精准的XPath定位父容器下的表格(推荐)
table_data <- webpage %>%
  html_nodes(xpath = '//div[@id="study-record-versions-table"]//table') %>%
  html_table(fill = TRUE) %>%
  .[[1]]

# 查看结果
print(table_data)

关键说明

  • 无需指定tbody:html_table函数会自动解析整个表格的内容,包括thead和tbody,直接定位到table元素即可。
  • 优先用静态元素定位:抓取静态HTML时,尽量依赖服务器返回的固定元素(如id、通用标签),避开JS动态生成的自定义组件。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.15 11:57:37