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

如何使用rvest从PubMed页面HTML提取首个h4下的研究引用?

提取首个h4层级下的研究引用文本(rvest实现)

解决思路

要获取第一个h4标签对应的研究引用(即其下方refs-list容器内的h5文本),需精准定位目标节点,同时注意补全原始HTML中缺失的闭合标签(否则解析会出现结构错误)。

方法一:XPath选择器实现

library(rvest)
library(xml2)

# 补全闭合标签后的HTML文本
text = '<!DOCTYPE html> 
<html lang="en" > 
<div class="references" id="references">
<h4 class="refs-list-title">References to studies included in this review</h4>
<div class="refs-list">
<h5 class="refs-list-title">Ahn 2008</h5>
<h5 class="refs-list-title">Al‐Shehr 2020</h5>
</div>
<h4 class="refs-list-title">References to studies excluded from this review</h4>
<div class="refs-list">
<h5 class="refs-list-title">Smith 2020</h5>
</div>
</div>
</html>'

pubmed_page = read_html(text)

# 提取目标文本
included_studies = xml_find_all(pubmed_page, ".//div[@id='references']/h4[@class='refs-list-title'][1]/following-sibling::div[@class='refs-list'][1]/h5[@class='refs-list-title']") %>%
  xml_text()

print(included_studies)

XPath逻辑说明:

  • 定位最外层参考文献容器:.//div[@id='references']
  • 选择容器内第一个h4标签:/h4[@class='refs-list-title'][1]
  • 选中该h4的首个同级refs-list容器:/following-sibling::div[@class='refs-list'][1]
  • 提取容器内所有h5标签文本:/h5[@class='refs-list-title']

方法二:CSS选择器实现

# 用CSS选择器提取目标文本
included_studies_css = pubmed_page %>%
  html_element("#references .refs-list-title:nth-of-type(1) + .refs-list") %>%
  html_elements(".refs-list-title") %>%
  html_text()

print(included_studies_css)

CSS选择器逻辑说明:

  • #references .refs-list-title:nth-of-type(1):选中references容器内第一个refs-list-title类元素(即第一个h4)
  • + .refs-list:选择该h4紧邻的下一个refs-list类容器
  • 提取容器内所有refs-list-title类的h5文本

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.25 00:36:26