两行命令-批量快速整理google scholar检索结果
知道我的朋友应该比较清楚,事实上,我【主导 / 参与】开发了不少小工具(很多时候,我似乎并不愿意称之为软件,毕竟我始终觉得他们的实现过于naive)。不过,鉴于我所实现的功能几乎是基于数据分析高频且常见的需求,所以这些工具,往往会有一定的用户量。其中有一小部分是已经对外开放:
TBtools
EasyCodeML
IGV-sRNA
....
事实上,还有更多,但鉴于各种各样的原因,我自认为不释放反而是一个好事。Anyway,工具释放了,用户量有了。但是,没有正式发表的工作,无法被正式引用。有时候,我们希望:
看看到底我们写的小工具是否有人在工作中使用
看看到底多少人由于不知道预印本的存在而引用的是软件连接,或者只是直接提到软件名字而没有任何引用
看看到底他们都用在什么地方【此处,我们需要论文中相关的文字部分】
以上,我们可以很简单的在google scholar中检索到,如下
我们可以看到,预印本被引用了71次,然而事实上,应该是存在216个检索结果(其中应是150+个检索结果是预印本发表之后的;如果你花点时间看看,就会发现多数是引用了链接)
于是,对于各位写了软件,公开使用,想知道谁用了你的软件来干啥的,我们可以写两个命令,快速且批量地整理检索结果。得到如下:
具体操作
进入google scholar,进行一定的检索,得到相对满意的答案后,复制链接
https://scholar.google.com/scholar?as_vis=1&q=%22TBtools%22&hl=en&as_sdt=1,31&as_ylo=2016
基于上述,我们知道一共是有206个检索结果【206~~ 这两天似乎多了10个citations....】
找一个能访问到google的主机,如Digital Ocean的主机上运行,运行,【其中TotalRecord,各位自行计算 206%10*10】
先写一行命令下载具体记录信息【注意,linux和ping同google scolar的主机才有用】
totalRecord=200
breakTime=3
for start in `seq 0 10 $totalRecord`;do wget -e robots=off -H --user-agent="Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.0.3) Gecko/2008092416 Firefox/3.0.3" -nd "https://scholar.google.com/scholar?as_vis=1&start=$start&q=%22TBtools%22&hl=en&as_sdt=1,31&as_ylo=2016" -O google.$start.info;
sleep $breakTime;
done
再写一行命令,整理信息
for file in google.*;do perl -0777 -lne 'print s/[\r\n]//gr."\n" for map {m#<h3.*?>.*?<a.*?>(.+?)</a></h3>.*?<div class="gs_a">(.*?)</div>.*?<div class="gs_rs">(.*?)</div>#gs} $_' $file|paste - - - ;done > merged.info.xls
如果,你需要使检索结果看起来好看一点,那么我这里附加两个小命令
# 去除一些链接符号,注意保留为.tab结尾,以免excel错误解析
perl -lpe 's/<.*?>//g' merged.info.xls > merged.info.mod.tab
# 分离作者信息和期刊信息
perl -F'\t' -lane '$F[1]=~/^(.*)-(.*?), (\d+) - (.*)$/;print join qq{\t},$F[0],$1,$2,$3,$4,$F[2]' merged.info.mod.tab > merged.info.mod.tab.split
# 转换为中文编码,方便后续处理
iconv -t GB2312 -f UTF-8 -c merged.info.mod.tab.split > merged.info.mod.tab.split.xls
当然,上述得到的是TBtools相关的信息,我完全可以简单修改,得到EasyCodeML的被引用情况。甚至,我.....可以用于整理任何google scholar的检索结果....比如我检索“RNAseq”....
写在后面
说了过几天写,于是我过几天就真的写了。这应是一件非常简单的事情...需要的是基本的linux基础知识,还有一点文本处理能力。
无论如何,祝大家科研顺利。