写论文需要查资料。查资料要找文献。文献放在期刊里。期刊有电子版。电子版期刊用网站装起来。这些网站就是数据库。数据库要能用代码访问。代码可以帮我们做很多事。
找文献很花时间。我们要读很多文章。有时要找某个主题的所有文章。有时要找某个作者的全部研究。有时要追踪一篇文章被谁引用过。这些工作用手做很慢。我们可以写代码来做。
代码是什么。代码是一串指令。电脑能看懂代码。电脑按代码做事。我们告诉电脑找什么资料。电脑就去找。电脑很快。电脑不累。电脑能找到很多资料。
写这种代码不难。我们先要学一点编程。编程语言很多。Python语言很常用。Python简单。Python能做好多事。我们用Python写代码来查文献。
数据库有大门。大门叫API。API是特别的地址。我们向这个地址发请求。数据库收到请求就给我们资料。请求要用代码写。资料用代码收回来。
举个例子。PubMed是个大数据库。PubMed放了很多医学文章。PubMed有API。我们写代码问PubMed。代码可以问“给我关于糖尿病的文章”。PubMed听到请求就回话。PubMed的回答是一堆数据。数据里有文章题目。数据里有作者名字。数据里有发表年份。数据里有摘要内容。我们拿到数据就能分析。
代码怎么写。先装Python。电脑里没有Python就去官网下载。官网是python.org。下载完安装好。然后要装工具包。工具包叫requests。requests能帮我们发请求。装工具包用pip命令。打开电脑的命令窗口。输入pipinstallrequests。等一会儿就装好了。
开始写代码。打开一个文本编辑器。写下面的字。
importrequests
这三个字意思是我们要用requests工具包。
然后我们告诉电脑去哪里。我们去PubMed的API地址。地址是固定的。我们把它存起来。
url='https://eutils.ncbi.nlm.nih.gov/entrez/eutils/esearch.fcgi'
我们要告诉PubMed找什么。我们找糖尿病的文章。糖尿病英文是diabetes。我们还要告诉它找多少篇。先找五篇看看。这些条件要写成参数。
params={'db':'pubmed','term':'diabetes','retmode':'json','retmax':5}
db是说数据库名字。term是说搜索词。retmode是说我们要的数据格式。json格式电脑好处理。retmax是说最多拿几篇。
现在发请求。
response=requests.get(url,params=params)
这行代码意思是。用requests工具的get功能。去那个地址。带上那些参数。等着回答。回答的东西叫response。
我们要看回答里有什么。
data=response.json()
把回答变成json格式。存到data里。
data里面有很多内容。我们想要文章编号。文章编号叫id。PubMed给每篇文章一个编号。编号是数字。我们把这些编号拿出来。
id_list=data['esearchresult']['idlist']
idlist就是编号列表。现在我们有五个编号了。每个编号对应一篇文章。
光有编号不够。我们要看文章信息。文章信息在另一个地方。我们用编号去要信息。PubMed有另一个API地址。地址是'https://eutils.ncbi.nlm.nih.gov/entrez/eutils/esummary.fcgi'。我们把编号给它。它给我们详细信息。
再写代码。
url2='https://eutils.ncbi.nlm.nih.gov/entrez/eutils/esummary.fcgi'params2={'db':'pubmed','id':','.join(id_list),'retmode':'json'}
id那里要把编号连起来。中间用逗号隔开。这样PubMed才知道我们要哪几篇。
再发一次请求。
response2=requests.get(url2,params=params2)data2=response2.json()
现在data2里有详细信息了。我们把它打印出来看看。
print(data2)
电脑会显示很多字。这些字里有文章题目。有作者。有期刊名字。有发表年份。我们可以让电脑只挑重要的显示。
比如我们要题目。题目在data2['result']里面。我们写个循环。让电脑把每个编号对应的题目找出来。
forpmidinid_list:article_info=data2['result'][pmid]title=article_info['title']print(title)
这样电脑就只打印五篇文章的题目。我们一眼就能看完。
这只是一个简单的例子。代码还能做更多事。我们可以让电脑找一百篇文章。我们可以让电脑只找最近三年的文章。我们可以让电脑把作者名字都记下来。我们可以让电脑统计哪个期刊发表最多。
代码能帮我们管理文献。我们看完一篇文献。可能想保存下来。保存成文件。文件可以放在电脑里。文件按主题分类。我们可以写代码来做这件事。代码把文章信息从数据库拿出来。代码生成一个文档。文档里写好文章题目。写好作者。写好摘要。然后代码把文档存到指定的文件夹。下次我们想找。直接去文件夹看。
代码能帮我们分析文献。很多文章有很多作者。我们可以分析作者合作网络。谁和谁一起写文章多。哪个团队发表文章多。代码可以把作者名字提取出来。代码可以画出合作关系的图。图能帮助我们看清研究圈子的结构。
代码能帮我们追踪文献。一篇文章发表后。会被其他文章引用。我们可以写代码定期检查。检查这篇文章有没有被新文章引用。代码每周运行一次。去数据库查一下。如果有新引用。代码就发邮件告诉我们。我们就不用自己天天去查了。
代码能帮我们发现趋势。一个研究领域每年发表很多文章。哪些词经常出现。哪些方法越来越热门。代码可以把所有文章的摘要收集起来。代码可以数一数哪些词出现最多。代码可以画出趋势变化的曲线。我们看到曲线就知道领域在往哪里发展。
写代码要有耐心。一开始可能写不对。电脑会报错。报错不要紧。看错误信息。错误信息会告诉我们哪里出问题。慢慢改。改对了代码就能运行。多写几次就熟练了。
数据库的API各有各的规矩。PubMed有PubMed的规矩。IEEEXplore有IEEEXplore的规矩。ScienceDirect有ScienceDirect的规矩。我们要看它们的说明书。说明书会说怎么发请求。说明书会说我们能拿到什么数据。按照说明书写代码就行。
有的数据库要钥匙。钥匙叫APIkey。没有钥匙不能访问。我们要去数据库网站申请钥匙。申请通常是免费的。申请要填表格。表格问我们是谁。问我们为什么用。我们如实填写。拿到钥匙后。写代码时把钥匙放在请求里。数据库看到钥匙才开门。
写代码是工具。工具帮我们省时间。省下时间我们可以多读文献。省下时间我们可以多思考。省下时间我们可以写更好的论文。工具不能代替我们思考。工具帮我们处理杂事。我们的大脑用来做更重要的事。
很多研究者都在用代码。生物学家用代码查基因文献。物理学家用代码查物理文献。社会学家用代码查社会研究文献。代码是通用的。学会一种就能用在很多地方。代码技能很有用。
学习写代码就像学骑车。开始可能摇摇晃晃。摔几次就会了。会了就很简单。以后去哪里都方便。查文献的代码不难学。从简单的开始。找一篇教程跟着做。做出一个小程序。成功了就有信心。再做更复杂的。一步一步来。
电脑很听话。我们写对了代码。电脑就做对的事。电脑不会偷懒。电脑不会抱怨。我们可以让电脑半夜运行代码。我们睡觉。电脑工作。早上起来。资料已经整理好了。放在桌上。等我们看。
这是代码的好处。代码让研究更高效。代码让资料更整齐。代码让我们看得更远。