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

如何使用rvest爬取URL锚点(#)片段对应菜单下的网页数据

问题根因

你拿到空结果的核心原因有两个:

  • URL里的#锚点只在浏览器本地生效,不会提交到服务端,你带锚点发起请求和请求默认地址拿到的初始HTML完全一致
  • 「Studies」板块的表格数据是页面加载后通过JS动态渲染的,rvest只能解析初始静态HTML,不会执行JS,所以匹配不到对应元素
解决方案

推荐优先使用接口抓取方案,效率更高;如果需要模拟页面操作可以使用无头浏览器方案。

方案1:直接调用后端数据接口(推荐)

该站点的「Studies」数据有公开的后端接口,是页面加载对应板块时实际请求的数据源,返回结构化JSON,不需要自行解析HTML,稳定性和效率都更高:

library(httr)
library(jsonlite)

# 发起接口请求
resp <- GET("https://www.neurosynth.org/api/analyses/terms/dorsomedial%20prefrontal/studies")
# 解析返回的JSON数据
studies_raw <- fromJSON(content(resp, as = "text"))
# 提取你需要的研究名称、作者、期刊字段
target_df <- studies_raw$data[, c("title", "authors", "journal")]

方案2:使用RSelenium模拟浏览器动态渲染

如果需要直接爬取渲染后的页面内容,可以使用RSelenium模拟浏览器执行JS、加载动态内容后再解析:

library(RSelenium)
library(rvest)

# 启动Chrome驱动(需提前安装匹配浏览器版本的ChromeDriver)
rd <- rsDriver(browser = "chrome", port = 4444L, chromever = "你的Chrome浏览器对应版本号")
driver <- rd$client

# 访问目标页面
driver$navigate("https://www.neurosynth.org/analyses/terms/dorsomedial%20prefrontal/#studies")
# 等待动态内容加载完成,可根据网速调整等待时长
Sys.sleep(3)

# 获取渲染完成的页面源码
page_html <- read_html(driver$getPageSource()[[1]])
# 提取表格内的链接元素
study_elements <- page_html %>% html_elements("#analysis-studies-table a")
# 提取文本内容
study_texts <- html_text(study_elements)

# 运行结束关闭驱动
driver$close()
rd$server$stop()

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 15:45:05