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

如何用R获取Scopus数据库中期刊的最高百分位数值(含年度数据)

如何用R获取Scopus数据库中期刊的最高百分位数值(含年度数据)

嘿,我懂你想抓取Scopus所有期刊最高百分位数值(最好能拿到年度更新数据)的需求,而且你已经尝试用rvest但没成功,还发现官方API没法获取这个数据——这确实挺头疼的。

先说说你之前rvest代码没得到想要结果的原因:你抓取的那个表格其实只是页面上的CiteScore更新说明,根本不是期刊的百分位数据表格!你看返回的内容都是关于CiteScore计算频率的信息,和期刊数据完全不沾边。而且Scopus的期刊列表是动态加载的,静态的read_html根本拿不到完整的期刊数据内容。

下面给你几个可行的方案:

方案1:利用Scopus官方导出功能(最稳妥)

既然API走不通,Scopus本身支持批量导出期刊数据。你可以手动操作:

  • 打开Scopus的期刊来源页面,根据需求筛选期刊(比如选择对应年份的百分位数据)
  • 找到导出选项,选择导出为CSV格式
  • 然后在R里用read.csv()或者readr::read_csv()读取这个文件就行

如果需要年度数据,你可以每年重复这个操作,或者在筛选时切换年份后分别导出。这个方法完全符合Scopus的使用条款,不会有被封禁的风险。

方案2:用RSelenium处理动态加载(适合自动化)

如果想自动化抓取,就得用能模拟浏览器的工具,比如RSelenium,因为Scopus的内容是动态渲染的,需要模拟滚动、甚至登录(如果你的访问需要机构账号)才能获取完整数据。

简单示例代码(前提是你已经安装了RSelenium和对应浏览器的驱动,比如ChromeDriver):

library(RSelenium)
library(rvest)
library(dplyr)

# 启动浏览器驱动
driver <- rsDriver(browser = "chrome", port = 4567L)
remDr <- driver$client

# 打开Scopus来源页面
remDr$navigate("https://www.scopus.com/sources.uri")

# 这里需要根据实际情况添加操作:比如登录(如果需要)、滚动加载所有期刊、找到数据表格
# 注意:Scopus可能有反爬机制,操作不要太频繁

# 等待页面加载完成(可以根据实际情况调整等待时间)
Sys.sleep(5)

# 获取页面源码
page_source <- remDr$getPageSource()[[1]]
site <- read_html(page_source)

# 尝试抓取期刊数据表格(注意选择正确的CSS/XPath节点,实际节点需要你自己检查页面)
journal_data <- site %>% 
  html_node("table#some-journal-table-id") %>% 
  html_table()

# 关闭浏览器
remDr$close()
driver$server$stop()

重要提醒

  • 一定要遵守Scopus的使用条款,不要高频次爬取,避免IP被封禁
  • 如果是机构订阅用户,确保你的账号有权限访问所有需要的期刊数据
  • 动态页面的节点可能会随时变化,需要你自己用浏览器的开发者工具检查最新的CSS或XPath选择器

备注:内容来源于stack exchange,提问作者Bruno Mioto

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.17 09:34:49