基于微博的数据抓取热点检测与舆情分析系统平台(3)
时间:2022-03-06 11:38 来源:毕业论文 作者:毕业论文 点击:次
第4章,系统实现和可视化,介绍展示平台的设计与实现; 微博爬虫设计 2。1微博爬虫概述 WeiboSpider 是使用Python 语言编写的,使用weibo。com 作为数据来源,能够模拟登录用户行为,使用户身份进行网络访问的网络爬虫。可以同时使用多个用户的身份进行微博爬取。 WeiboSpider 是一个分布式系统,在集中式调度器的控制下,可将爬虫部署在多个计算机中,使用多个IP进行爬取。文献综述 WeiboSpider支持SpiderWorker的健康状态检查,会自动回收失效SpiderWorker持有的微博账号,自动鉴别新上线的SpiderWorker并为其分配账号。 WeiboSpider 支持使用HTTP API 进行控制,可以添加删除关键字,控制关键字的激活状态,并可以查看关键字跟踪的最新时间和频率信息。 2。2微博爬虫基本组成和架构简介 2。2。1爬虫实例 爬虫实例(SpiderWorker)是WeiboSpider 中负责数据抓取和解析的部分,本身并不和数据库进行交互。SpiderWorker在启动时会随机产生一个uuid[9],这个唯一id作为自身的标识。由于UUID 本身有128比特的长度,随机生成的id可以看作是唯一的,不会发冲突。 微博爬虫实例工作时效果如图 2。1所示 图 2。1 爬虫实例日志输出样例 2。2。2调度器 调度器(Scheduler)是WeiboSpider的核心组件,控制着所有爬虫实例的账号分配和任务分发,在一个WeiboSpider 实例中,Scheduler 有且只有一个。 调度器会从数据库中取得所有可用的微博账号,并记录他们在爬虫实例中的分配状况。 同时,调度器直接提供一个简单的HTTP API,供其它组件控制使用。调度器工作时输出如图 2。2所示 图 2。2调度器工作时的日志输出 2。2。3账号登陆模块 由于微博的登陆流程复杂,与服务器之间的交互动作繁多,选择直接操纵浏览器模拟用户的键盘鼠标行为是最稳定可靠的方案。在WeiboSpider中,使用前端测试框架Selenium调用Chrome Webdriver 进行浏览器的操作。登陆模块在可以在具有GUI的Windows或者Linux、OSX上运行。 2。2。4数据收集器来`自+优-尔^论:文,网www.youerw.com +QQ752018766- 数据收集器(DataCollector)是WeiboSpider 中专门负责存储微博数据的模块,由于LevelDB写入时进行Merge操作耗时不稳定,为了不影响爬虫的运行连续性,专门将微博数据存储功能拆分出来,提高了系统的性能和稳定性。 2。2。5跟踪和展示平台 为了方便用户控制爬虫工作,同时能够查看到最新的微博数据,完成将数据提交给用户的最后一步,本系统实现了一个基于Tornado和Vue。js的数据展示网站。当网络爬虫取得新的微博数据后,将根据用户的需要,使用WebSocket将数据发送给用户的浏览器,并实时显示最新的微博。 2。2。6RabbitMQ 本平台的各个组件除了少量使用HTTP API 互相通信外,几乎所有互相通信任务都是基于RabbitMQ 完成。RabbitMQ具体应用在会在后文介绍。 (责任编辑:qin) |