如何用rvest提取HTML中与<p>标签对应的<ul>列表并转为数据框或列表?
用R的rvest关联HTML中
标题与对应
- 列表的方法
核心思路是针对每个<p>标签,精准定位其紧随其后的第一个<ul>,以此实现标题和对应列表项的绑定,具体实现如下:
library(rvest) library(purrr) library(dplyr) # 假设tmp是已获取的<div class="main--content">节点 # 提取所有标题文本(自动清理多余换行/空格) titles <- tmp %>% html_elements("p") %>% html_text2() # 为每个标题匹配对应列表项 list_content <- tmp %>% html_elements("p") %>% # 用XPath定位当前<p>后面的第一个<ul> map(~ .x %>% html_element(xpath = "following-sibling::ul[1]") %>% html_elements("li") %>% html_text2()) # 生成数据框结构(标题+对应列表) result_df <- tibble( 标题 = titles, 列表项 = list_content ) # 或者生成命名列表(键为标题,值为对应列表项) result_list <- setNames(list_content, titles)
补充处理
如果存在部分<p>后无对应<ul>的情况,可过滤掉空列表数据:
cleaned_df <- result_df %>% filter(lengths(列表项) > 0)
内容的提问来源于stack exchange,提问作者Nico
相关产品推荐
相关产品推荐

