批量获取指定多个学者已发表的科研文章
新媒体管家
最近,我有一个小任务,需要把清单上提及的老师们公开发表过的文章做个记录。
我大致数了一下,大概有几十来号人,像这种工作,绝不可能让我一个一个上WOS或者Pubmed检索吧,多费劲。
考虑到这批目标主要都在某大学的各大附属机构,所以我决定用Scopus进行批量获取。利用的R包是rscopus,通过Scopus API进行数据访问。事实上Python也可以轻易实现。
读取待查询名单
将清单都导入R,主要有两列,C1为姓,C2为名
library(rscopus)
library(readxl)
name = read_excel("name.xlsx")
colnames(name)=c("ln","fn")
获取作者ID
考虑到中文名字重名现象过多,我们需要添加上附属机构ID( affid
)进一步筛选。
总体的思路是先将所有作者的条目获取下来,再根据 affid
进行筛选,最后将得到的 auid
储存下来。
auid <- data.frame(auth_name=character(0),au_id=character(0),affid=character(0),affil_name=character(0))
for (i in 1:nrow(name)){
lastname=name[i,1]
firstname=name[i,2]
au = get_author_info(last_name = lastname, first_name = firstname,api_key ="31f*********************") #api_key需自行申请
id = subset(au,affid=="60082502"|affid=="60021182"|affid=="60026383")
auid = rbind(auid,id)
}
获取对应文献
有了 auid
,我们就可以锁定作者,然后将所有的文章记录都抓取下来,最后写入表格。
test<-author_df(au_id = 53984838100,api_key = "31f*********************")
paperid <- data.frame(a=character(0),b=character(0),c=character(0),d=character(0),e=character(0),f=character(0),g=character(0),h=character(0),j=character(0),k=character(0),l=character(0),m=character(0))
colnames(paperid)<-colnames(test$df)
pauid <- as.numeric(auid$au_id)
for (i in 1:nrow(auid)){
paper<-author_df(au_id = pauid[i],api_key = "31f*********************")
paperid = rbind(paperid, paper)
}
mergepaper<-merge(auid,paperid,by="au_id")
write.csv(mergepaper, file="targetpap.csv")
存在的问题
需要提前知道机构ID
难免有漏网之鱼,Scopus的时效性慢点,提前online的文章不一定能跟进
结果还需筛选,因为同一机构内也有同名情况