爬虫还是开源的,反正我不信。

362 阅读4分钟
![](https://upload-images.jianshu.io/upload_images/24896955-f252ef92b74fbb76.jpg?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

开源爬虫

DataparkSearch是一个在GNU GPL许可下发布的爬虫搜索引擎

GNU Wget是一个在GPL许可下,使用C语言编写的命令行式的爬虫。它主要用于网络服务器和FTP服务器的镜像

Heritrix是一个互联网档案馆级的爬虫,设计的目标为对大型网络的大部分内容的定期存档快照,是使用java编写的。

Ht://Dig在它和索引引擎中包括了一个网页爬虫。

HTTrack用网络爬虫创建网络站点镜像,以便离线观看。它使用C语言编写,在GPL许可下发行。

![](https://upload-images.jianshu.io/upload_images/24896955-f834a5c48d6d980c.jpg?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

ICDL Crawler是一个用C++编写,跨平台的网络爬虫。它仅仅使用空闲的CPU资源,在ICDL标准上抓取整个站点。

JSpider是一个在GPL许可下发行的,高度可配置的,可定制的网络爬虫引擎。

LLarbin由Sebastien Ailleret开发;

Webtools4larbin由Andreas Beder开发;

![](https://upload-images.jianshu.io/upload_images/24896955-b67aa277454b6c8a.jpg?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

Methabot是一个使用C语言编写的高速优化的,使用命令行方式运行的,在2-clause BSD许可下发布的网页检索器。它的主要的特性是高可配置性,模块化;它检索的目标可以是本地文件系统,HTTP或者FTP。

Nutch是一个使用java编写,在Apache许可下发行的爬虫。它可以用来连接Lucene的全文检索套件;

Pavuk是一个在GPL许可下发行的,使用命令行的WEB站点镜像工具,可以选择使用X11的图形界面。与wget和httprack相比,他有一系列先进的特性,如以正则表达式为基础的文件过滤规则和文件创建规则。

WebVac是斯坦福WebBase项目使用的一个爬虫。

![](https://upload-images.jianshu.io/upload_images/24896955-c0501f54effff3d0.jpg?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

WebSPHINX(Miller and Bharat, 1998)是一个由java类库构成的,基于文本的搜索引擎。它使用多线程进行网页检索,html解析,拥有一个图形用户界面用来设置开始的种子URL和抽取下载的数据;

WIRE-网络信息检索环境(Baeza-Yates 和 Castillo, 2002)是一个使用C++编写,在GPL许可下发行的爬虫,内置了几种页面下载安排的策略,还有一个生成报告和统计资料的模块,所以,它主要用于网络特征的描述;

LWP:RobotUA(Langheinrich,2004)是一个在Perl5许可下发行的,可以优异的完成并行任务的 Perl类库构成的机器人。

Web Crawler是一个为.net准备的开放源代码的网络检索器(C#编写)。

![](https://upload-images.jianshu.io/upload_images/24896955-bb0b6fd637522f80.jpg?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

Sherlock Holmes收集和检索本地和网络上的文本类数据(文本文件,网页),该项目由捷克门户网站中枢(Czech web portal Centrum)赞助并且主用商用于这里;它同时也使用在。

YaCy是一个基于P2P网络的免费的分布式搜索引擎(在GPL许可下发行);

Ruya是一个在广度优先方面表现优秀,基于等级抓取的开放源代码的网络爬虫。在英语和日语页面的抓取表现良好,它在GPL许可下发行,并且完全使用Python编写。按照robots.txt有一个延时的单网域延时爬虫。

Universal Information Crawler快速发展的网络爬虫,用于检索存储和分析数据;

![](https://upload-images.jianshu.io/upload_images/24896955-0ef7b12347ef9dcd.jpg?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

Agent Kernel,当一个爬虫抓取时,用来进行安排,并发和存储的java框架。

是一个使用C#编写,需要SQL Server 2005支持的,在GPL许可下发行的多功能的开源的机器人。它可以用来下载,检索,存储包括电子邮件地址,文件,超链接,图片和网页在内的各种数据。

Dine是一个多线程的java的http客户端。它可以在LGPL许可下进行二次开发。

网络爬虫的组成

在网络爬虫的系统框架中,主过程由控制器,解析器,资源库三部分组成。控制器的主要工作是负责给多线程中的各个爬虫线程分配工作任务。解析器的主要工作是下载网页,进行页面的处理,主要是将一些JS脚本标签、CSS代码内容、空格字符、HTML标签等内容处理掉,爬虫的基本工作是由解析器完成。资源库是用来存放下载到的网页资源,一般都采用大型的数据库存储,如Oracle数据库,并对其建立索引。

![](https://upload-images.jianshu.io/upload_images/24896955-5f90d19ec0bfaa64.jpg?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

控制器

控制器是网络爬虫的中央控制器,它主要是负责根据系统传过来的URL链接,分配一线程,然后启动线程调用爬虫爬取网页的过程。

解析器

解析器是负责网络爬虫的主要部分,其负责的工作主要有:下载网页的功能,对网页的文本进行处理,如过滤功能,抽取特殊HTML标签的功能,分析数据功能。

资源库

主要是用来存储网页中下载下来的数据记录的容器,并提供生成索引的目标源。中大型的数据库产品有:Oracle、Sql Server等。

![](https://upload-images.jianshu.io/upload_images/24896955-4aaa9cd09007fb68.gif?imageMogr2/auto-orient/strip)