r语言 - 如何从片段(#)菜单中抓取网页



我是网络抓取的新手,我可以使用revest做基础工作,但我想要的信息是在#fragment;

https://www.neurosynth.org/analyses/terms/dorsomedial%20prefrontal/研究如果我运行

website <- https://www.neurosynth.org/analyses/terms/dorsomedial%20prefrontal/#studies
website %>% html_elements("#analysis-studies-table a")

使用选择器小工具从"研究"中找到CSS代码。子菜单,它返回一个空结果,我认为因为它正在查看默认的片段菜单" map "

https://www.neurosynth.org/analyses/terms/dorsomedial%20prefrontal/

我需要做些什么来绕过这个问题并抓取研究数据(研究名称,作者,期刊)?

您可以调用API并传入页面源中提供的分析id。这将返回所有178个清单。

library(jsonlite)
library(purrr)
library(rvest)
link <- "https://www.neurosynth.org/api/analyses/724/studies?dt=1"
data <- jsonlite::read_json(link)$data
df <- map_dfr(data, ~ {
node <- read_html(.x[[1]]) %>% html_node("a")
data.frame(
title = node %>% html_text2(),
webpage = node %>% html_attr("href") %>% url_absolute(link),
authors = .x[[2]],
journal = .x[[3]],
loading = .x[[4]]
)
})

这个swagger文件仍在工作,但没有列出所有路由:https://neurosynth.org/api/swagger.json

我不知道你的最终目标是什么,但是有很多相关的GitHub包和下面的python教程(未测试):https://nbviewer.org/github/neurosynth/neurosynth/blob/master/examples/neurosynth_demo.ipynb