如何在R语言中通过DOI获取文献的被引历史?
如何在R语言中通过DOI获取文献的被引历史?
我完全懂你的困扰——scholar包确实是针对作者维度的引用数据设计的,直接传DOI肯定会报错。不过别担心,有几个靠谱的R语言方案能帮你实现“用DOI查单篇文献年度被引历史”的需求:
方法一:先通过DOI转Google Scholar条目ID,再用scholar查询
这个思路是先把DOI转换成文献的Google Scholar专属ID,再用你熟悉的get_citation_history函数查询。步骤如下:
- 先安装并加载所需包:
install.packages(c("scholar", "rcrossref")) library(scholar) library(rcrossref)
- 执行查询代码:
# 替换成你要查询的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:
- 安装加载包:
install.packages("bibliometrix") library(bibliometrix)
- 执行查询:
# 构建包含目标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
相关产品推荐
相关产品推荐

