论文部分内容阅读
如今的世界正处于互联网信息飞速增长的时代,常见的搜索渠道如百度等搜索引擎只能给我们提供一些杂乱无章的浅显信息,仅根据相关度等因子显示而未经过算法针对性的筛选。网络爬虫是网页信息抓取的一种常用手段,但常见的单机网络爬虫系统效率较低,虽然后续改进的利用VM做分布式系统的效率有所提升,但是离用户真正所期待的速度还有很大的差距。传统的爬虫系统对于URL去重和页面内容去重等功能需求不够友好,一些简易爬虫系统还会经常被网站的反爬虫系统限制。为了有针对性地快速获取有效信息,本文设计了一个基于Docker容器集群的分布式网络爬虫系统。此系统基于Scrapy-Redis框架,利用Redis存储爬取解析到的URL,利用MongoDB存储爬取解析到的网页内容,采用主从混合分布式系统部署。经实验证明,此系统能够有效地爬取用户需要的信息且速度较分布式VM系统有很大提升。本文所做的工作及创新点如下:(1)深入研究了BloomFilter去重算法,在原算法的基础上加以创新,提出了二阶段BloomFilter去重方案,使其具备更低的误判率。(2)改进了通用的爬虫框架,使其更好地支持分布式系统。增加了页面内容查重模块,并优化了在海量数据场景下的查询时间,提升了爬取工作的效率和有效性。(3)深入研究了大型网站对于爬虫的常见限制措施,对于爬取过程中经常遇到的反爬虫机制做了针对性的处理。(4)深入研究了基于Docker容器的分布式集群系统,探究了Kubernetes集群管理平台,部署了分布式爬虫系统。