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

如何在R语言中通过DOI获取文献的被引历史?

如何在R语言中通过DOI获取文献的被引历史?

我完全懂你的困扰——scholar包确实是针对作者维度的引用数据设计的,直接传DOI肯定会报错。不过别担心,有几个靠谱的R语言方案能帮你实现“用DOI查单篇文献年度被引历史”的需求:


方法一:先通过DOI转Google Scholar条目ID,再用scholar查询

这个思路是先把DOI转换成文献的Google Scholar专属ID,再用你熟悉的get_citation_history函数查询。步骤如下:

  1. 先安装并加载所需包:
install.packages(c("scholar", "rcrossref"))
library(scholar)
library(rcrossref)
  1. 执行查询代码:
# 替换成你要查询的DOI
target_doi <- "10.1111/j.1365-2486.2008.01617.x"

# 第一步:用rcrossref获取文献标题
article_info <- cr_works(doi = target_doi)
article_title <- article_info$data$title[1]

# 第二步:搜索标题找到对应的Google Scholar条目ID
search_result <- scholar_search(article_title)
# 一般第一个结果就是目标文献,提取ID
article_id <- search_result$id[1]

# 第三步:获取年度被引历史
citation_history <- get_citation_history(id = article_id)
print(citation_history)

⚠️ 注意:如果文献标题重复度高,搜索结果可能需要你手动确认ID;另外Google Scholar有访问频率限制,频繁查询可能会被临时限流。


方法二:用bibliometrix包直接基于DOI获取计量数据

bibliometrix是专门做文献计量分析的工具包,支持通过DOI直接拉取被引数据,不需要依赖Google Scholar:

  1. 安装加载包:
install.packages("bibliometrix")
library(bibliometrix)
  1. 执行查询:
# 构建包含目标DOI的数据框
doi_df <- data.frame(DOI = c("10.1111/j.1365-2486.2008.01617.x"))

# 转换为可分析的格式并获取计量数据
bib_data <- convert2df(doi_df, dbsource = "doi", format = "bibtex")
citation_stats <- biblioAnalysis(bib_data)

# 提取年度被引历史
yearly_cites <- citation_stats$TCbyYear
print(yearly_cites)

这个方法的优点是数据源更稳定(基于CrossRef等学术数据库),不过部分文献的年度被引细节可能不如Google Scholar全面。


方法三:(仅供学习)用rvest爬取Google Scholar页面

如果上面的方法都满足不了需求,你可以尝试用rvest爬取Google Scholar的文献页面获取被引历史。但要注意:Google Scholar的服务条款禁止自动化爬取,这个方法仅适合个人学习使用,绝对不能大规模批量操作。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.23 08:47:40