使用rvest网页抓取:提取表格及行内悬浮文本并合并为数据框
解决表格与悬浮文本合并问题
以下是可实现表格数据与对应行悬浮文本合并的代码:
library(dplyr) library(rvest) library(purrr) # 目标页面URL url <- "https://clinicaltrials.gov/ct2/history/NCT04658186" page <- read_html(url) # 提取页面中的表格数据 table_data <- page %>% html_element("table") %>% html_table(fill = TRUE) # 提取表格每行对应的悬浮文本(span的title属性) hover_text <- page %>% html_elements("table tr") %>% purrr::map_chr(function(row) { # 提取当前行内span的title,无则返回NA row_title <- row %>% html_element("span") %>% html_attr("title") ifelse(is.null(row_title), NA_character_, row_title) }) # 移除表头行的悬浮文本(与表格数据行对齐) hover_text <- hover_text[-1] # 将悬浮文本合并为表格的新列 table_data <- table_data %>% mutate(Hover_Text = hover_text)
关键说明:
- 精准匹配行与悬浮文本:直接定位表格内的
<tr>元素提取对应行的悬浮文本,避免全局提取<span>导致的顺序错位问题。 - 兼容无悬浮文本的行:通过判断逻辑给无悬浮文本的行填充
NA,保证列长度与表格数据完全匹配。 - 对齐数据行:由于
<table tr>包含表头行,移除第一个元素后,悬浮文本向量的长度与表格数据行数量完全一致。
内容的提问来源于stack exchange,提问作者Ashok G
相关产品推荐
相关产品推荐

