主流开源爬虫框架比较与剖析
优采云 发布时间: 2020-07-03 08:0165 ELECTRONICS WORLD 探求与观察(下转第67页)主流开源爬虫框架比较与剖析北京工商大学 刘 雯【摘要】网络爬虫是搜索引擎与信息检索的基础工具,在信息采集、信息过滤等场景中有着广泛的应用。本文首先介绍了URL链接库、文档内容模块、文档解析模块等爬虫基础概念,然后对比剖析了Nutch、Heritrix、Larbin、Scrapy等主流开源爬虫框架。【关键词】网络爬虫;数据采集;搜索引擎1.引言近些年来,随着互联网的高速发展,网络中的数据呈现出了爆炸式的下降,如何搜集整合这种数据并从中提取出有效的信息,引发了多方面的挑战。面对这种挑战,爬虫技术得到了充分的注重。开源网路爬虫框架促使爬虫的开发与应用变的高效方便。各个开源爬虫框架的实现语言与功能不完全相同,适用场景也不尽相同,需要对比不同开源爬虫框架之间的好坏。2.爬虫的相关概念网路爬虫是用于互联网采集的一种工具,通常又被称为网路机器人。在数据挖掘、信息检索等领域,网络爬虫被广泛使用,从而获取最原始的数据。网络爬虫也是信息检索和搜索引擎的重要组成部份,通过网路爬虫采集到的信息,经过搜索引擎的整合,可以更好的用于检索。
2.1 网路爬虫的组成部分主流爬虫框架一般由以下部份组成:1. *敏*感*词*URL库:URL用于定位互联网中的各种资源,如最常见的网页链接,还有常见的文件资源、流媒体资源等。*敏*感*词*URL库作为网络爬虫的入口,标识出爬虫应当从何处开始运行,指明了数据来源。2.数据下载器:针对不同的数据种类,需要不同的下载形式。主流爬虫框架通畅提供多种数据下载器,用来下载不同的资源,如静态网页下载器、动态网页下载器、FTP下载器等。3.过滤器:对于早已爬取的URL,智能的爬虫须要对其进行过滤,以提升爬虫的整体效率。常用的过滤器有基于集合的过滤器、基于布隆过滤的过滤器等。4.流程调度器:合理的调度爬取流程,也可以提升爬虫的整体效率。在流程调度器中,通常提供深度优先爬取、广度优先爬取、订制爬取等爬取策略。同时提供单线程、多线程等多种爬取方法。2.2 网络爬虫的爬取策略网路爬虫的爬取策略,可以更高效的组织爬虫的爬取过程。常见的爬取策略包括深度优先爬取、深度优先爬取、订制爬取等策略等。1.深度优先爬取:该策略在爬取每位URL资源后,会随机爬取改URL对应的所有子URL资源,直到全部子URL资源全部爬取完毕,再爬取下一个URL资源。
深度优先爬取更关注数据的深度,希望通过爬取更多的子URL资源,来获取更深层次的数据。2.广度优先爬取:该策略在爬取配个URL资源时,会继续爬取同层次的其他URL资源,当本层的URL资源都被爬取完毕后,再爬取下一次URL资源。广度优先爬取更关注数据的广度,这样可以囊括更全面的数据。3.订制爬取:再好多场景中,深度优先爬取或广度优先爬取未能满足复杂的数据采集需求,此时须要定制爬取策略,如垂直搜索策略,先通过制订关键词进行搜索后开源爬虫框架,再结合深度优先爬取或广度优先爬取,才可以获取到垂直领域的特定数据。2.3 爬虫的增量爬取从数据的角度看,有些爬虫只进行单次的爬取操作,而有些爬虫须要进行增量爬取,用来积累数据。对于单次爬取的网路爬虫,实现较为简单,因为不用考虑过滤去重等操作,所以模块相对较少。单次爬取的爬虫主要考虑爬取的效率,有时会通过多线程或多进程等形式提升爬取效率。对于须要增量爬取的网路爬虫。通常须要对URL链接、资源内容等进行过滤和去重。每次爬取的时侯,需要对比数据是否重复,并将早已爬取过的内容过滤掉,从而降低冗余数据的爬取和储存。实际应用中,增量爬虫的使用较为广泛。3.主流开源爬虫框架爬虫技术发展至今,已经非常成熟,同时也形成了好多开源的爬虫框架,入Nutch、Heritrix、Larbin、Scrapy,这些开源框架的实现语言与功能各不相同,以下是这几款开源爬虫框架的比较与剖析。
3.1 NutchNutch是一个比较小型的开源框架,也是隶属于Apache基金会的一个开源项目。Nutch最初服务于Lucene项目,Lucene是一个完整的搜索引擎框架,其中Nutch提供数据爬取服务。因为Lucene是一个通用的搜索引擎框架,所以Nutch在设计之初也主要用于通用数据的爬取。在满足通用需求的同时,Nutch牺牲了一些多样化开发的特点。优点:Nutch适用于各类规模的爬取任务,底层可以和Hadoop平台对接,提供分布式的爬取功能,同时支持分布式的调度及分布式的储存。为了扩充各种多样化功能,Nutch设计了插件框架,可以通过添加插件,来实现愈发复杂的爬取功能。缺点:虽然有插件框架,但是Nutch的多样化开发成本仍然较高。 在使用默认的配置过滤文件是,是不抓取动态网页的,要想爬取动态网页须要更改过滤规则。3.2 HeritrixHeritrix是基于Java语言的爬虫框架,因其可扩展型和丰富的各种组件而闻名。但配置相对繁杂,所以学习成本过高。Heritrix提供了多种下载器,用于下载网页、流媒体等多种类型的数据。Heritrix还提供了图形界面拿来管理爬虫,可以通过网页来启动货控制各种爬虫。
优点:Heritrix的爬虫订制参数多包括,可设置输出日志、可设置多线程采集模式、可设置下载速率上限等 开发者可以通过更改组件的参数,来高效的更改爬虫功能 。缺点:Heritrix很难实现分布式爬取,因为多个单独爬虫之间,无法合作完成爬取任务,可扩展性较差。在爬取失败时,也缺少重万方数据 67 ELECTRONICS WORLD 探求与观察工作台处于清洁的状态,并监督工作人员防静电腕带的配戴情况,且使用的钳子须要具有防静电的功能,或者在取料的时侯利用真空吸笔完成,放置静电在元器件于手接触时形成,第四,定期对相关设施进行防静电测试处理 [6] 。二、SMT表面贴装技术的发展趋势近些年来,我国科学技术水平在社会经济快速发展的影响下得到了迅猛发展,表面贴装技术在此背景下也获得了宽广的发展空间,并将会以小型化、精细化的方向不断发展。针对SMT表面贴装技术的发展趋势进行剖析可以发觉,在未来的发展过程中,将会大幅度缩小SDC/SMD的容积,并其而不断扩大其生产数目,就现阶段表面贴装技术的发展现况而言,将0603以及1005型表面贴膜式电容和内阻商品化的目的已然实现。同时,集成电路的发展方向将会是小型化和STM化,现阶段,市场上早已出现了腿宽度为0.3mm的IC业,其发展方向将是BGA。
此外,焊接技术也将会逐步趋向成熟阶段,惰性气体于1994年便早已被点焊设备厂家制造下来以满足回流焊以及波峰焊的需求。与此同时免清洗工业也涌现下来但是应用非常广泛。最后,测试设备以及贴片设备的效率将会大幅度提高,且灵活性也会不断增强。目前,在使用SMT技术的时侯,其贴片速率大概在5500片/h左右,通过使用高柔化和智能化的贴片系统促使制造商的生产成品被大幅度增加,进而促使生产效率以及精度的提高,并且丰富了贴片的功能 [7] 。三、结束语与传统的THT而言,SMT的优势主要表现在其性能好、组装密度高以及体积小和可靠性强等方面,受到其上述优势的影响,现阶段电子设备以及电子产品的装配技术均以SMT为主,并且在电子产品的生产制造领域得到广泛应用。尽管在实际应用的时侯,SMT仍然表现出一些不足之处,但是与其所发挥的正面影响对比,这些不足并不影响该技术应用价值。所以,需要加强SMT技术的宣传力度,促进其应用可以覆盖更多领域。与此同时,还须要加到对该技术的研究力度,对其各项工艺流程给以建立,促进其所用得到充分发挥,继而有助于电子产品工艺制程清洁化、装备模块化、生产集成化和自动化的愿景尽快实现,为电子行业的可持续发展提供可靠保障。
参考文献[1] 杨柳.SMT表面贴装技术工艺应用实践[J].科研,2016(8):00079-00079.[2]孙丹妮,周娟,耿豪凯,等.累积和与指数加权移动平均控制图在表面贴装技术中的应用及仿真[J].机械制造,2017,55(3):77-80.[3]朱飞飞.谈电子工业中SMT技术的工艺研究和发展趋势[J].科研,2016(8):00286-00286.[4] 高文璇.Protel DXP技术与SMT技术在*敏*感*词*明.电子工业中SMT技术工艺研究及发展趋势[J].电子技术与软件工程,2016(13):139-139.(上接第65页)试等机制,导致开发者须要做好多额外工作来填补那些设计上的缺位。不同于Nutch框架开源爬虫框架,仅凭Heritrix不能完成搜索引擎的全部工作,而只能完成爬虫阶段的爬取工作。
3.3 LarbinLarbin是一个基于C++语言的爬虫框架。Larbin提供了相对简单单非常易用的爬虫功能。单机Larbin爬虫可以每晚获取百万量级的网页。单Larbin不提供网页解析服务,也不考虑内容的储存及处理。如果象使用Larbin进行小型系统的实现,则须要自行开发相应的其他组件。优点:指定入口URL后,可以手动扩充,甚至整个网站镜像;支持通过后缀名对抓取网页进行过滤;只保存原始网页;利用C++开发,非常高效。缺点:只有网页下载器,而没有网页解析器。不支持分布式爬取。没有手动重试功能。该项目在2003年后停止开发维护。 3.4 ScrapyScrapy是基于python语言开发的爬虫框架,由于它的轻量化设计和简单易用,而广泛遭到开发者的欢迎。优点:简单易用:只需编撰爬取规则,剩下由scrapy完成易扩充:扩展性设计,支持插件,无需改动核心代码可移植性:基于Linux、Windows、Mac、BSD开发和运行设计。缺点:单机多线程实现,不支持分布式。数据储存方案支持 Local fi lesystem、FTP、S3、Standard output,默认无分布式存储解决方案默认中间过程网页不会保存,只保存抽取结果。
4.总结与展望本文首先介绍了URL链接库、文档内容模块、文档解析模块等爬虫基础概念,然后对比剖析了Nutch、Heritrix、Larbin、Scrapy等主流开源爬虫框架。不同的爬虫开源框架的实现语言和功能不同,适用的场景也不尽相同,需要在实际应用中选择合适的开源爬虫框架。参考文献[1]刘玮玮.搜索引擎中主题爬虫的研究与实现[D].南京理工大学,2006.[2]詹恒飞,杨岳湘,方宏.Nutch分布式网路爬虫研究与优化[J].计算机科学与探求,2011,5(01):68-74.[3]安子建.基于Scrapy框架的网路爬虫实现与数据抓取剖析[D].吉林大学,2017.[4]周立柱,林玲.聚焦爬虫技术研究综述[J].计算机应用,2005(09):1965-1969.[5]杨定中,赵刚,王泰.网络爬虫在Web信息搜索与数据挖掘中应用[J].计算机工程与设计,2009,30(24):5658-5662.万方数据