基于Scrapy的分布式网络爬虫系统设计与实现

来源 :电子科技大学 | 被引量 : 23次 | 上传用户:jieshoukode
下载到本地 , 更方便阅读
声明 : 本文档内容版权归属内容提供方 , 如果您对本文有版权争议 , 可与客服联系进行内容授权或下架
论文部分内容阅读
随着互联网飞速的发展,网络上的信息呈指数级的增长,如此高的信息数量级也给用户获取信息带来了巨大的挑战。网络爬虫作为获取数据的工具常常被应用于搜索引擎当中,然而面向中小规模系统的网络爬虫由于其自身的局限性常常面临诸多问题,例如单机的网络爬虫程序抓取数据速度太慢,而大多数成熟的开源网络爬虫框架都未实现分布式化;互联网中的网页结构各不相同,单一的网络爬虫程序无法匹配所有类型的网页等等。因此设计并实现一个可定制性高的、简单稳定的、面向中小规模的高性能分布式爬虫具有很重要的意义,本文在Scrapy框架的基础上结合Redis数据库设计并实现了一个分布式网络爬虫系统,使用者通过简单的配置即能快速的抓取到其想要的数据。本文的主要工作包括以下几点:(1)重点研究了主从式架构下的任务调度算法,并在此基础上提出了一种动态反馈的任务调度策略。主节点在掌握从节点群中各个Scrapy爬虫实时状态的情况下使用该策略进行任务调度,并在爬虫节点发生变化时进行相应的任务调整,确保系统中的各个爬虫节点动态负载均衡。(2)针对传统的基于内存或磁盘的URL去重时导致的空间占用率过高的问题,本文结合布隆过滤器算法提出了一种海量URL去重策略,该策略利用多个哈希函数对原始的URL数据集进行空间映射压缩,降低其空间的占有率,并且在查询过程中,仅通过一次哈希即可判断某URL是否抓取过,大大提高了查询效率。(3)设计并实现了一种多节点下的爬虫限速策略,集群中的爬虫节点能根据用户设定的频率来访问对应的站点。其中基于IP的限速限定了同一台机器中的爬虫节点访问某站点的频率,基于爬虫类型的限速限定了同一种类型的爬虫节点访问某站点的频率。(4)对Scrapy框架中的调度器、数据采集以及数据管道组件重新定制开发,调度器的开发使其支持分布式采集,数据采集的开发使其支持带采集规则的数据抽取,数据管道的开发使其支持数据清洗、编码转换以及正文提取等功能。(5)基于Twisted框架设计并实现了一个异步任务响应的爬虫管理器,用户通过该管理器能方便的控制各节点上的Scrapy爬虫。
其他文献
根据C-D生产函数模型,利用计量分析工具和方法,对武汉市1990~2001年经济增长因素进行了实证分析。结果表明,该期间武汉市经济增长主要由投资拉动,相比之下,劳动力和技术进步增
王文斌,现任天津市南开区环境卫生设备研制所所长,天津市福润劳务服务有限公司总经理,曾获得南开区十佳青年荣誉称号、多次获得局先进个人和优秀共产党员称号、市级再就业先进工
目的分析健康体检人员颈动脉彩色多普勒超声检查结果以及与相关疾病的关系。方法收集2 259例健康体检人员颈动脉彩色多普勒超声检查结果,计算颈动脉内膜粗糙、内膜中层厚度和
针对酸吸收塔塔盘失效的现象,分析了塔盘失效的主要原因。通过改变塔盘分布和支撑方式,解决了酸吸收塔塔盘的共振问题。塔盘改进后的塔设备运行了8个月,结果显示该塔运行良好
调查显示,我国中小企业数量达1000万家左右,创造了60%的GDP。但在众多中小企业中,信息化不足导致企业决策失误、市场反应速度缓慢等,已经成为制约其进一步发展的重要因素。据统计,
【正】合理制定农产品价格,必须考虑到级差地租的因素.社会主义社会中,耕地依然存在肥力、位置和集约化程度的差别,而其中数量有限的较优土地,又被各个集体所有制单位和国营
目的 :探索在老年医学科晚夜间开展护理二线值班岗位管理的模式和效果。方法 :应用岗位管理的方法,通过岗位分析,明确任职条件、工作范畴及岗位责任,因岗择人,赋予工作任务及
【正】编辑同志:我想请教一下,社会总需求和社会总供给主要用哪些指标来反映?如何反映?达到什么程度算趋于平衡?河北省廊坊市统计局孙书玲孙书玲同志:你好!现就你提出的问题,
魏源未认识到王学之错在于“格物”之对象仅限于“心”,且是一个瞬间(过程),魏源当然也不能认识到朱学之错在于人为设定一个“天理”,人只须求比理便可达圣道,而是认为朱学“