爬虫大全,爬虫工具汇总xxxxxxxx1x2xxxxxxx

爬虫,即网络爬虫,是一种自动获取网页内容的程序。是搜索引擎的重要组成部分,因此搜索引擎优化很大程度上就是针对爬虫而做出的优化。

开源爬虫Labin,Nutch,Neritrix介绍和对比

简介

问题Labin的主要问题是,:

仅提供保存网页保存功能,没有进行进一步的网页解析;

不支持分布式系统;

功能相对简单,提供的配置项也不够多;

不支持网页自动重访,更新功能;

从2003年底以后,Labin已经放弃更新,目前处于荒芜长草的状态

简介:

Apache的子项目之一,属于Lucene项目下的子项目。

Nutch是一个基于Lucene,类似Google的完整网络搜索引擎解决方案,基于Hadoop的分布式处理模型保证了系统的性能,类似Eclipse的插件机制保证了系统的可客户化,而且很容易集成到自己的应用之中。总体上Nutch可以分为2个部分:抓取部分和搜索部分。抓取程序抓取页面并把抓取回来的数据做成反向索引,搜索程序则对反向索引搜索回答用户的请求。抓取程序和搜索程序的接口是索引,两者都使用索引中的字段。抓取程序和搜索程序可以分别位于不同的机器上。下面详细介绍一下抓取部分。

*****************

Heritrix与Nutch对比

和Nutch。二者均为Java开源框架,Heritrix是SourceForge上的开源产品,Nutch为Apache的一个子项目,它们都称作网络爬虫/蜘蛛(WebCrawler),它们实现的原理基本一致:深度遍历网站的资源,将这些资源抓取到本地,使用的方法都是分析网站每一个有效的URI,并提交Http请求,从而获得相应结果,生成本地文件及相应的日志信息等。

Nutch和Heritrix的差异:

Nutch只获取并保存可索引的内容。Heritrix则是照单全收。力求保存页面原貌

Nutch可以修剪内容,或者对内容格式进行转换。

Nutch保存内容为数据库优化格式便于以后索引;刷新替换旧的内容。而Heritrix是添加(追加)新的内容。

Nutch从命令行运行、控制。Heritrix有Web控制管理界面。

Nutch的定制能力不够强,不过现在已经有了一定改进。Heritrix可控制的参数更多。

Heritrix提供的功能没有nutch多,有点整站下载的味道。既没有索引又没有解析,甚至对于重复爬取URL都处理不是很好。

Heritrix的功能强大但是配置起来却有点麻烦。

三者的比较一、从功能方面来说,Heritrix与Larbin的功能类似。都是一个纯粹的网络爬虫,提供网站的镜像下载。而Nutch是一个网络搜索引擎框架,爬取网页只是其功能的一部分。

二、从分布式处理来说,Nutch支持分布式处理,而另外两个好像尚且还没有支持。

三、从爬取的网页存储方式来说,Heritrix和Larbin都是将爬取下来的内容保存为原始类型的内容。而Nutch是将内容保存到其特定格式的segment中去。

四,对于爬取下来的内容的处理来说,Heritrix和Larbin都是将爬取下来的内容不经处理直接保存为原始内容。而Nutch对文本进行了包括链接分析、正文提取、建立索引(Lucene索引)等处理。

五,从爬取的效率来说,Larbin效率较高,因为其是使用c++实现的并且功能单一。

crawler

开发

语言

功能

单一

支持分布式

爬取

效率

镜像

保存

Nutch

Java

×

Larbin

C++

Heritrix

-----------------------------------------------------------

其它一些开源爬虫汇总:

以下是我的一些实践经验:

至于题主提到的:

还有,采用现有的Python爬虫框架,相比与直接使用内置库,优势在哪?因为Python本身写爬虫已经很简单了。

thirdpartylibrary可以做到built-inlibrary做不到或者做起来很困难的事情,仅此而已。还有就是,爬虫简不简单,完全取决于需求,跟Python是没什么关系的。

要处理js运行后的结果,可以使用html5lib。但我觉得最好的是用beautifulsoup4的接口,让它内部用html5lib。

自己写爬虫的话,用一些异步事件驱动库,如gevent,比单纯多线程要好很多。

python写爬虫还是不错的,不过用爬虫框架来写,还真没有尝试过,打算尝试下,准备搞个大规模的数据抓取

下面我们再对Nutch、Larbin、Heritrix这三个爬虫进行更细致的比较:

开发语言:Java

Nutch是一个基于Lucene,类似Google的完整网络搜索引擎解决方案,基于Hadoop的分布式处理模型保证了系统的性能,类似Eclipse的插件机制保证了系统的可客户化,而且很容易集成到自己的应用之中。

Larbin只是一个爬虫,也就是说larbin只抓取网页,至于如何parse的事情则由用户自己完成。另外,如何存储到数据库以及建立索引的事情larbin也不提供。

latbin最初的设计也是依据设计简单但是高度可配置性的原则,因此我们可以看到,一个简单的larbin的爬虫可以每天获取500万的网页,非常高效。

与Nutch比较

和Nutch。二者均为Java开源框架,Heritrix是SourceForge上的开源产品,Nutch为Apache的一个子项目,它们都称作网络爬虫它们实现的原理基本一致:深度遍历网站的资源,将这些资源抓取到本地,使用的方法都是分析网站每一个有效的URI,并提交Http请求,从而获得相应结果,生成本地文件及相应的日志信息等。

二者的差异:

其中Nutch和Heritrix比较流行

估计和我一样在Windows开发、部署到linux服务器的人不少。nodejs在这时就有个很突出的优点:部署方便、跨平台几乎无障碍,相比之下python……简直让人脱层皮。解析页面用的是cheerio,全兼容jQuery语法,熟悉前端的话用起来爽快之极,再也不用折腾烦人的正则了;操作数据库直接用mysql这个module就行,该有的功能全有;爬取效率么,其实没有真正做过压力测试,因为我抓的是知乎,线程稍多一点瓶颈就跑到带宽上。而且它也不是真多线程而是异步,最后带宽全满(大约几百线程、10MB/s左右)时,CPU也不过50%左右,这还只是一个linode最低配主机的CPU。况且平时我限制了线程和抓取间隔,简直不怎么消耗性能;最后是代码,异步编程最头疼的是掉进callback地狱,根据自己实际情况写个多线队列的话,也不比同步编程麻烦太多就是了。

1.对页面的解析能力基本没区别,大家都支持正则,不过Python有些傻瓜拓展,用起来会方便很多;2.对数据库的操作能力的话,PHP对MySQL有原生支持,Python需要添加MySQLdb之类的lib,不过也不算麻烦;3.爬取效率的话,都支持多线程,效率我倒是没感觉有什么区别,基本上瓶颈只在网络上了。不过严谨的测试我没做过,毕竟我没有用多种语言实现同一种功能的习惯,不过我倒是感觉PHP好像还要快一些?4.代码量的话,爬虫这种简单的东西基本没什么区别,几十行的事,如果加上异常处理也就百来行,或者麻烦点异常的Mark下来,等下重爬等等的处理,也就几百行,大家都没什么区别。不过Python如果不把lib算进去的话显然是最少的。

Node.js。优点是效率、效率还是效率,由于网络是异步的,所以基本如同几百个进程并发一样强大,内存和CPU占用非常小,如果没有对抓取来的数据进行复杂的运算加工,那么系统的瓶颈基本就在带宽和写入MySQL等数据库的I/O速度。当然,优点的反面也是缺点,异步网络代表你需要callback,这时候如果业务需求是线性了,比如必须等待上一个页面抓取完成后,拿到数据,才能进行下一个页面的抓取,甚至多层的依赖关系,那就会出现可怕的多层callback!基本这时候,代码结构和逻辑就会一团乱麻。当然可以用Step等流程控制工具解决这些问题。最后说Python。如果你对效率没有极端的要求,那么推荐用Python!首先,Python的语法很简洁,同样的语句,可以少敲很多次键盘。然后,Python非常适合做数据的处理,比如函数参数的打包解包,列表解析,矩阵处理,非常方便。

THE END
1.InternetExplorer8,7Internet Explorer Administration Kit 8 Internet Explorer Administration Kit (IEAK) 8 è progettato per semplificare la creazione, la distribuzione e la gestione di pacchetti personalizzati di Internet Explorer 8. Può essere utilizzato per configurare un'esperienza standard di Windows Internet Explorer https://learn.microsoft.com/it-it/previous-versions/msdn10/bb310673(v=msdn.10)
2.InternetArchive互联网档案馆The Internet Archive 定期收录并永久保存全球网站上可以抓取的信息,为互联网保存一份档案。备份整个互联网,让网络上的信息像印刷在书籍里一样被永恒地保存下来。收录工作有主次之分,对于不同的网站,收录的数量和频次也不相同。 Internet Archive - 互联网档案馆 Wayback Machine - 网站时光倒流机器 1 2 1. Intehttps://blog.csdn.net/chengyq116/article/details/122443892
3.重磅33款可用来抓数据的开源爬虫软件工具代码托管:https://github.com/internetarchive/heritrix3 授权协议: Apache 开发语言: Java 操作系统: 跨平台 特点:严格遵照robots文件的排除指示和META robots标签 5、heyDr heyDr是一款基于java的轻量级开源多线程垂直检索爬虫框架,遵循GNU GPL V3协议。 https://cloud.tencent.com/developer/article/1107529
4.InternetArchive·GitHubThe Internet Archive is "the library of the Internet", and a big supporter of Free Software. - Internet Archivehttps://github.com/internetarchive
5.900款经典街机InternetArcade任你玩键鼠新闻现在80、90后都长大了,很多人都沉浸在忙碌的工作中没有闲暇时间来玩游戏了,不过一家名为Internet Arcade的网站上已经收藏了900款经典的街机游戏。并且,最给力的是,你不但不用投币,还可以直接在浏览器中畅玩它们! Internet Archive 这些软件收藏是Internet Archive努力保留计算机历史的工作的一部分,去年的时候,他们还将https://mouse.zol.com.cn/488/4882319.html
6.TheInternetArchiveIsMakingWikipediaMoreReliableWIREDonly $30 $5 for one year. get digital access the internet archive is making wikipedia more reliable the operator of the wayback machine allows wikipedia's users to check citations from books as well as the web. photograph: alexander spatari/getty images save save wikipedia is the arbiter https://www.wired.com/story/internet-archive-wikipedia-more-reliable/
7.SearchingthewebbuildsfullerpictureofarachnidtradeIn addition to the sampling of contemporary sites, we explored the archived pages available forhttps://www.terraristik.comvia the Internet Archive (2002–201967). Terraristika had been previously shown as a major contributor to traded species lists4, and the website’s age and accessibility viahttps://www.nature.com/articles/s42003-022-03374-0
8.archiveaccessThe Internet Archive launched a “Wayback Machine” in October 2001 to provide free access to the archive over the web. unesdoc.unesco.org 2001 年 10 月,因特网档案馆开发了一种“返回 器”,供人们自由利用网上的资料。 unesdoc.unesco.orghttp://cn.linguee.com/%E8%8B%B1%E8%AF%AD-%E4%B8%AD%E6%96%87/%E7%BF%BB%E8%AD%AF/archive+access.html