最近参加了招商银行总行的fintench精英技术训练营的选拔赛,在通过笔试后,进入了课题研究的环节。因为前段时间学习了一段时间Python,所以选择了《基于微博爬虫的舆情分析》这一课题。该课题的具体要求如下:
课题背景: 请设计微博爬虫,获取微博上最近N天(N<=10)内与招商银行相关的热点新闻与用户意见,代码可根据输入的天数返回最新的微博信息。在已收集的数据中对提及的重点内容(招行相关产品、服务和重点事件等)进行抽取并进行一定程度上的情绪判定。最终以浅显易懂的方式呈现该段时间范围内微博上与招行相关的舆情信息,其中呈现的具体内容和方式可由考生自行设计。
请提交解决方案:课题需将爬虫构建相关PPT和代码作为研究的最终成果,并在PPT中简要展示以下几点内容:
(1)构建爬虫和舆情分析的主要流程与模块;
(2)项目过程中使用到的工具,遇到的困难和问题,以及解决的方式;
(3)简要评价爬虫的效率与性能;
(4)最终基于微博信息进行舆情分析的结果展示;
1.爬虫与舆情分析的主要流程
1.1爬虫切入点
本课题主要对新浪微博进行爬虫,但是遗憾的是新浪微博并没有提供以“关键字+时间+区域”方式获取官方API。但是庆幸的是,新浪提供了高级搜索功能。
点击搜索微博后,我们看地址栏:
http://s.weibo.com/weibo/%25E6%258B%259B%25E5%2595%2586%25E9%2593%25B6%25E8%25A1%258C&typeall=1&suball=1×cope=custom:2017-05-02:2017-05-02&Refer=g
解析如下固定地址部分: http://s.weibo.com/wb/
关键字(2次URLEncode编码): %25E6%258B%259B%25E5%2595%2586%25E9%2593%25B6%25E8%25A1%258C
搜索时间范围: timescope=custom:2017-05-02:2017-05-02
可忽略项: Refer=g
某次请求的页数(未出现): page=1(某页请求页数)
既然是这么回事,我们接下来就可以使用网页爬虫的方式获取“关键字+时间”的微博了……
1.2爬虫思路
本课题所采用的爬虫语言是Python。在对新浪微博进行爬虫之前,首先需要模拟登陆,这里所采用的办法是:使用rsa加密模块进行模拟登陆。接下来要构造URL,爬取网页,然后解析网页中的微博信息,如图所示。
另外,高级搜索最多返回 50 页微博。时间范围( timescope )可设置为 1 天,如