使用rvest爬取ClinicalTrials.gov数据表的CSS选择器问题
问题描述
需爬取ClinicalTrials.gov指定搜索结果页展示的临床试验结果列表,目标页面地址为:https://clinicaltrials.gov/ct2/results?term=nivolumab+AND+Overall+Survival
已编写的R代码因CSS选择器配置错误,无法正确提取目标表格,原代码如下:
# create custom url ctgov_url <- "https://clinicaltrials.gov/ct2/results?term=nivolumab+AND+Overall+Survival" # read HTML page ct_page <- rvest::read_html(ctgov_url) # extract related terms ct_page %>% # find elements that match a css selector rvest::html_element("t") %>% # retrieve text from element (html_text() is much faster than html_text2()) rvest::html_table()
错误原因
- 原代码传入
html_element()的选择器t无效,HTML标准中不存在<t>标签,无法匹配到页面内的表格元素。 - 该页面的搜索结果列表存储在id属性为
theDataTable的<table>标签内,原选择器未定位到正确元素。
修正后代码
library(rvest) library(magrittr) # 构造目标访问链接 ctgov_url <- "https://clinicaltrials.gov/ct2/results?term=nivolumab+AND+Overall+Survival" # 读取页面HTML内容 ct_page <- read_html(ctgov_url) # 解析提取临床试验结果表格 trial_result_table <- ct_page %>% # 匹配id为theDataTable的表格元素 html_element(css = "table#theDataTable") %>% # 将HTML表格解析为R数据框 html_table()
提示:该页面默认仅展示前10条分页结果,若需获取全量搜索结果,可调整URL中的分页参数,或使用平台官方开放的API接口拉取数据,避免爬取逻辑被分页拦截。
内容的提问来源于stack exchange,提问作者Howard Baik
相关产品推荐
相关产品推荐

