写过论文或者正在写论文的人都知道,文献综述是论文的重要组成部分,也是导师审查的重点之一,要完成好这一部分的写作,免不了阅读大量文献,通常还会要求中英文献都要有,而且尽量参考权威期刊同时避免参考学位论文。下载文献的时候,在知网上点点点,选选选,翻翻翻,是不是还挺麻烦的?笔者在这里分享给大家一个相对轻松的方法。
在校时,有很多免费的学术资源供大家使用,但随着毕业,这些资源基本都得花钱啦(在校生们要好好珍惜这些资源)。没有免费资源怎么办呢?笔者在这里推荐百度学术,因为这里的外文文献相对还是比较多的。
那么,我们现在开始示范如何利用python批量下载文献。
配置:Python 3.6+Chrome
获取搜索结果页信息
打开百度学术(xueshu.baidu.com),输入关键词。
笔者这次主要是想阅读神经网络之父Geoffrey Hinton的论文,所以直接搜索关键词Geoffrey Hinton,在搜索结果页面右键选择检查,就可以查看到页面各部分的HTML标签。
找到每一个想要爬取的信息的HTML标签,就可以开始写爬虫了。
先导入需要用到的包,如果你是直接安装的anconda,那你只需要单独再安装一下bs4,打开终端使用安装命令:pip install beautifulsoup4即可安装。若只单独安装了python3.6,那么同样通过pip的方式安装pandas。re、os、requests、collections都是python的内置模块。
接着,创建一个名为paper的namedtuple,包含三个属性:title用来存放论文标题,author用来存放作者,abstract用来存放论文摘要
paper=namedtuple(‘paper’,[‘title’,’author’,’abstract’])
爬取论文主要用到BeautifulSoup中的find_all方法。find_all方法接收的参数实际是筛选条件。如find_all(‘div’,{‘class’:’abstract’})意味着寻找标签为div并且满足class标签等于‘abstract’的内容。返回的结果可能有多个,选取想要的结果的索引,然后用text属性获取其文本内容。
通常搜索结果会有多页,这里介绍两种方法来实现自动爬取多页结果:
- 在搜索结果页来回翻几页,观察网页url的变化,找到规律,写循环,直接访问各页面。
笔者找到的规律是:地址中有一个参数表示了第几页。于是根据你想爬取的页面数量,写一个简单的循环就可以实现。
- 通过审查页面上“下一页”的审查元素,获取其链向的地址,在爬取完当前页面内容后,继续爬取下一页。(这里不提供代码,有兴趣的读者可以自己实践,很简单)
对代码进行简单修改可以实现对爬取文献数量的精确控制。
获取文献详情页信息
上一步获取的url是每一篇文献的详情页,我们现在要在详情页获取文献标题,作者,摘要,以及免费下载地址。再把以上信息都放到一个DataFrame里面,便于管理。
免费下载地址中,有时会存在无法访问的情况,为了能够成功下载到文献,这段代码会获取文献详情页的所有免费下载地址。
如此,一个管理文献库的DataFrame的基本结构就做好了,由于存在重复的情况,需要按论文标题去一下重。最终得到去重后的DataFrame长这个样子:
下载文献到本地
现在可以利用下面这段代码开始自动下载文献到本地啦:
新建一个专门存放文献的文件夹 在python里直接用os里面的mkdir就可以:
如:os.mkdir(‘E://文献’)
打印出来的内容告诉我们有些链接确实下载不了,于是尝试其他链接,文献成功下载。打开文件夹,你就能看到文献啦!
文献管理表分析
至此,我们其实可以针对这张管理表做一个简单的分析。
比如,文献库里,都包含了哪些年份的文献,各年份有多少篇文献。
简单利用文献标题做一个词云图,看一下Hinton都在研究些什么主题。
(深度,神经网络,玻尔兹曼机,信念网络…)
在笔者所下载的这35篇文献中,Hinton一共和37位作者合作过,其中与
Roland Memisevic (蒙特利尔大学MILA机器学习机构计算机科学的教授)
Ilya Sutskever (openAI实验室的联合创始人) 都合作过3次,与大部分学者都只合作了一次。
此外,你还可以做很多有趣的分析,自己动手尝试尝试吧!
读完本文,你应该可以动手尝试下载相关主题的文献。后续,我们还将示范如何提取pdf中的文献内容,并进行分析和总结,进一步帮助大家写论文!
本文为专栏文章,来自:KPMG大数据挖掘,内容观点不代表本站立场,如若转载请联系专栏作者,本文链接:https://www.afenxi.com/52346.html 。