批量获取指定多个学者已发表的科研文章

新媒体管家

最近,我有一个小任务,需要把清单上提及的老师们公开发表过的文章做个记录。

我大致数了一下,大概有几十来号人,像这种工作,绝不可能让我一个一个上WOS或者Pubmed检索吧,多费劲。

考虑到这批目标主要都在某大学的各大附属机构,所以我决定用Scopus进行批量获取。利用的R包是rscopus,通过Scopus API进行数据访问。事实上Python也可以轻易实现。

读取待查询名单

将清单都导入R,主要有两列,C1为姓,C2为名

  1. library(rscopus)

  2. library(readxl)

  3. name = read_excel("name.xlsx")

  4. colnames(name)=c("ln","fn")

获取作者ID

考虑到中文名字重名现象过多,我们需要添加上附属机构ID( affid)进一步筛选。 
总体的思路是先将所有作者的条目获取下来,再根据 affid进行筛选,最后将得到的 auid储存下来。

  1. auid <- data.frame(auth_name=character(0),au_id=character(0),affid=character(0),affil_name=character(0))

  2. for (i in 1:nrow(name)){

  3.  lastname=name[i,1]

  4.  firstname=name[i,2]

  5.  au = get_author_info(last_name = lastname, first_name = firstname,api_key ="31f*********************") #api_key需自行申请

  6.  id = subset(au,affid=="60082502"|affid=="60021182"|affid=="60026383")

  7.  auid = rbind(auid,id)

  8. }

获取对应文献

有了 auid,我们就可以锁定作者,然后将所有的文章记录都抓取下来,最后写入表格。

  1. test<-author_df(au_id = 53984838100,api_key = "31f*********************")

  2. 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))

  3. colnames(paperid)<-colnames(test$df)

  4. pauid <- as.numeric(auid$au_id)

  5. for (i in 1:nrow(auid)){

  6.  paper<-author_df(au_id = pauid[i],api_key = "31f*********************")

  7.  paperid = rbind(paperid, paper)

  8. }

  9. mergepaper<-merge(auid,paperid,by="au_id")

  10. write.csv(mergepaper, file="targetpap.csv")

存在的问题

  1. 需要提前知道机构ID

  2. 难免有漏网之鱼,Scopus的时效性慢点,提前online的文章不一定能跟进

  3. 结果还需筛选,因为同一机构内也有同名情况

(0)

相关推荐