欢迎来到天天文库
浏览记录
ID:31368453
大小:118.50 KB
页数:11页
时间:2019-01-09
《新浪微博数据爬取研究》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库。
1、新浪微博数据爬取研究 摘要:新浪微博的快速发展促进了基于微博数据的研究发展,如何获取微博数据是开展相关研究的首要问题。文中就分析爬取新浪微博数据的方法,提出了一种基于Python的语言,直接设置已登录用户Cookie信息,模拟浏览器访问的新浪微博数据爬取方案,解决了不使用新浪微博开放平台API爬取微博数据的主要问题,所实现的爬虫程序编程简单、性能稳定,能有效获取微博数据。 关键词:新浪微博;数据爬取;微博爬虫;Python 中图分类号:TP391;TP311文献标识码:A文章编号:2095-1302(2016)12-00-04 0引言 随着互联网的不断普及,人们越来越多地参与到互联
2、网的社交活动中,微博作为典型的互联网社交活动,得到了迅速发展。新浪微博是国内出现最早,也是规模最大的微博社区,新浪微博数据中心发布的“2015微博用户发展报告”指出:“截止2015年9月,微博月活跃人数已达到2.22亿,较2014年同期相比增长33%;日活跃用户达到1亿,较去年同期增长30%。随着微博平台功能的不断完善,微博用户群逐渐稳定并保持持续增长。”[1] 微博用户群的增长使得基于微博数据的社交网络分析[2]、用户行为分析[3,114]和网络数据挖掘[5]等相关研究越来越受到人们的重视,而如何从微博爬取感兴趣的数据则成为研究者要解决的首要问题。本文分析微博数据的爬取方式,提出一种基于
3、Python模拟浏览器登录的微博数据爬取方案,并讨论针对微博反爬机制的相关处理。 1微博数据的爬取方式 微博数据的爬取通常有两种方式,一种是调用新浪微博开放平台提供的微博开放接口,另一种是开发爬虫程序,模拟微博登录,分析获得的HTML页面,提取所需信息。 1.1调用微博开放接口 新浪微博开放平台[6]提供了二十余类接口,覆盖了微博内容、评论、用户及关系的各种操作,理论上该方法是最直接、方便的方式。但新版的微博开放接口存在一些限制,对于小型研究团队或个人而言不是很方便,突出表现在以下几点: (1)微博开放接口使用Oauth2.0认证授权,如果希望得到另外一个用户的个人信息和微博内容,
4、则必须由该用户授权; (2)微博开放接口存在访问频次限制,对于测试用户的每个应用,每小时最多只能访问150次; (3)很多研究所需要的数据只能通过高级接口才能访问,需要专门申请和付费。 正是因为这些限制的存在,自己设计开发网络爬虫程序获取微博数据就成了必不可少的备选或替代方案。 1.2开发微博爬虫程序11 设计开发微博爬虫程序需要分析新浪微博的特点、明确爬取数据的目的及用途,选择合理的开发语言,保证高效、稳定地获取微博数据。 1.2.1新浪微博的特点 与一般网站相比,新浪微博具有以下特点: (1)新浪微博面向登录用户,在访问微博数据前,用户必须先登录; (2)微博博文的显示
5、采用了延迟加载机制,一次只显示一个微博页面的部分博文,当用户浏览博文滚动到底部时,才继续加载当页的其他博文; (3)新浪微博有较完备的反爬虫机制,一旦微博服务器认定爬虫程序,就会拒绝访问。 基于新浪微博的上述特点,在设计微博爬虫时,需要对以上特点进行针对性处理。 1.2.2开发语言选择 从快速获取微博数据的角度看,Python是开发微博爬虫的首选语言,其具有如下特点: (1)Python是一种解释型高级语言,具有文字简约、容易学习、开发速度快等特点; (2)Python具有较丰富的库及第三方库,在开发爬虫方面比其他语言方便。考虑新浪微博在一段时间后就会微调其数据格式,因此使用Py
6、thon开发微博爬虫程序具有较高的易维护性。 2微博爬虫的实现 2.1微博爬虫的框架结构11 本文讨论的微博爬虫程序包括爬虫调度器、URL管理器、页面加载器、HTML解析器和数据输出器五个功能模块,其框架结构如图1所示。 图1微博爬虫的框架结构 2.1.1爬虫调度器 爬虫调度器是爬虫的控制程序,主要负责协调和调度微博爬虫的各个模块,其核心功能包括以下几项: (1)实现爬取微博数据的流程; (2)控制其他模块的执行; (3)模拟浏览器登录,为页面请求添加Headers信息; (4)控制微博访问频率,避免反爬虫机制拒绝访问。 2.1.2URL管理器 微博爬虫采用广度优先遍
7、历策略提取需要的数据,URL管理器需维护已经爬取的URL列表和等待爬取的URL列表。在得到新URL之后,首先检查已经爬取的URL列表,如果该URL不在列表中,则将其添加到等待爬取的URL列表。 2.1.3页面加载器 页面加载器根据爬虫调度器提供的Headers信息以及URL管理器提供的URL,向微博服务器发出请求,获得所请求的HTML页面。为了避免爬取过于频繁,导致微博服务器无法及时响应,或被服务器反爬虫
此文档下载收益归作者所有