首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

论文季,Python带你起个飞

毕业季到了,相信还有不少同学奋战在论文一线。作为过来人,笔者怀着学以致用的目的和回馈社会的决心,终于是写出了这篇《论文季,Python带你起个飞》之(一)......

阅读时长:15分钟

内容组成:文字+代码+图片

写过论文或者正在写论文的人都知道,文献综述是论文的重要组成部分,也是导师审查的重点之一,要完成好这一部分的写作,免不了阅读大量文献,通常还会要求中英文献都要有,而且尽量参考权威期刊同时避免参考学位论文。下载文献的时候,在知网上点点点,选选选,翻翻翻,是不是还挺麻烦的?笔者在这里分享给大家一个相对轻松的方法。

在校时,有很多免费的学术资源供大家使用,但随着毕业,这些资源基本都得花钱啦(在校生们要好好珍惜这些资源)。没有免费资源怎么办呢?笔者在这里推荐百度学术,因为这里的外文文献相对还是比较多的。

那么,我们现在开始示范如何利用python批量下载文献。

配置:Python 3.6+Chrome

获取搜索结果页信息

笔者这次主要是想阅读神经网络之父Geoffrey Hinton的论文,所以直接搜索关键词Geoffrey Hinton,在搜索结果页面右键选择检查,就可以查看到页面各部分的HTML标签。

找到每一个想要爬取的信息的HTML标签,就可以开始写爬虫了。

先导入需要用到的包,如果你是直接安装的anconda,那你只需要单独再安装一下bs4,打开终端使用安装命令:pipinstallbeautifulsoup4即可安装。若只单独安装了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中的文献内容,并进行分析和总结,进一步帮助大家写论文!

- END -

团队介绍:我们是毕马威旗下的专业数据挖掘团队,微信公众号(kpmgbigdata)每周六晚8点准时推送一篇原创数据科学文章。我们的作品都由项目经验丰富的博士或资深顾问精心准备,分享结合实际业务的理论应用和心得体会。欢迎大家关注我们的微信公众号,关注原创数据挖掘精品文章;您也可以在公众号中直接发送想说的话,与我们联系交流。

  • 发表于:
  • 原文链接http://kuaibao.qq.com/s/20180428G1L65E00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券