要玩大数据,没有数据怎么玩?这里推荐一些33款开源爬虫软件给大家。
爬虫,即网络爬虫,是一种自动获取网页内容的程序。是搜索引擎的重要组成部分,因此搜索引擎优化很大程度上就是针对爬虫而做出的优化。
网络爬虫是一个自动提取网页的程序,它为搜索引擎从万维网上下载网页,是搜索引擎的重要组成。传统爬虫从一个或若干初始网页的URL开始,获得初始网页上的URL,在抓取网页的过程中,不断从当前页面上抽取新的URL放入队列,直到满足系统的一定停止条件。聚焦爬虫的工作流程较为复杂,需要根据一定的网页分析算法过滤与主题无关的链接,保留有用的链接并将其放入等待抓取的URL队列。然后,它将根据一定的搜索策略从队列中选择下一步要抓取的网页URL,并重复上述过程,直到达到系统的某一条件时停止。另外,所有被爬虫抓取的网页将会被系统存贮,进行一定的分析、过滤,并建立索引,以便之后的查询和检索;对于聚焦爬虫来说,这一过程所得到的分析结果还可能对以后的抓取过程给出反馈和指导。
世界上已经成型的爬虫软件多达上百种,本文对较为知名及常见的开源爬虫软件进行梳理,按开发语言进行汇总。虽然搜索引擎也有爬虫,但本次我汇总的只是爬虫软件,而非大型、复杂的搜索引擎,因为很多兄弟只是想爬取数据,而非运营一个搜索引擎。
1、Arachnid
Arachnid是一个基于Java的webspider框架.它包含一个简单的HTML剖析器能够分析包含HTML内容的输入流.通过实现Arachnid的子类就能够开发一个简单的Webspiders并能够在Web站上的每个页面被解析之后增加几行代码调用。Arachnid的下载包中包含两个spider应用程序例子用于演示如何使用该框架。
特点:微型爬虫框架,含有一个小型HTML解析器
许可证:GPL
2、crawlzilla
crawlzilla是一个帮你轻松建立搜索引擎的自由软件,有了它,你就不用依靠商业公司的搜索引擎,也不用再烦恼公司內部网站资料索引的问题。
crawlzilla除了爬取基本的html外,还能分析网页上的文件,如(doc、pdf、ppt、ooo、rss)等多种文件格式,让你的搜索引擎不只是网页搜索引擎,而是网站的完整资料索引库。
拥有中文分词能力,让你的搜索更精准。
crawlzilla的特色与目标,最主要就是提供使用者一个方便好用易安裝的搜索平台。
特点:安装简易,拥有中文分词功能
3、Ex-Crawler
Ex-Crawler是一个网页爬虫,采用Java开发,该项目分成两部分,一个是守护进程,另外一个是灵活可配置的Web爬虫。使用数据库存储网页信息。
特点:由守护进程执行,使用数据库存储网页信息
4、Heritrix
Heritrix是一个由java开发的、开源的网络爬虫,用户可以使用它来从网上抓取想要的资源。其最出色之处在于它良好的可扩展性,方便用户实现自己的抓取逻辑。
Heritrix采用的是模块化的设计,各个模块由一个控制器类(CrawlController类)来协调,控制器是整体的核心。
特点:严格遵照robots文件的排除指示和METArobots标签
5、heyDr
heyDr是一款基于java的轻量级开源多线程垂直检索爬虫框架,遵循GNUGPLV3协议。
用户可以通过heyDr构建自己的垂直资源爬虫,用于搭建垂直搜索引擎前期的数据准备。
特点:轻量级开源多线程垂直检索爬虫框架
6、ItSucks
ItSucks是一个javawebspider(web机器人,爬虫)开源项目。支持通过下载模板和正则表达式来定义下载规则。提供一个swingGUI操作界面。
特点:提供swingGUI操作界面
7、jcrawl
jcrawl是一款小巧性能优良的的web爬虫,它可以从网页抓取各种类型的文件,基于用户定义的符号,比如email,qq.
特点:轻量、性能优良,可以从网页抓取各种类型的文件
8、JSpider
JSpider是一个用Java实现的WebSpider,JSpider的执行格式如下:
jspider[URL][ConfigName]
JSpider的行为是由配置文件具体配置的,比如采用什么插件,结果存储方式等等都在conf\[ConfigName]\目录下设置。JSpider默认的配置种类很少,用途也不大。但是JSpider非常容易扩展,可以利用它开发强大的网页抓取与数据分析工具。要做到这些,需要对JSpider的原理有深入的了解,然后根据自己的需求开发插件,撰写配置文件。
特点:功能强大,容易扩展
9、Leopdo
用JAVA编写的web搜索和爬虫,包括全文和分类垂直搜索,以及分词系统
特点:包括全文和分类垂直搜索,以及分词系统
10、MetaSeeker
是一套完整的网页内容抓取、格式化、数据集成、存储管理和搜索解决方案。
网络爬虫有多种实现方法,如果按照部署在哪里分,可以分成:
1,服务器侧:一般是一个多线程程序,同时下载多个目标HTML,可以用PHP,Java,Python(当前很流行)等做,可以速度做得很快,一般综合搜索引擎的爬虫这样做。但是,如果对方讨厌爬虫,很可能封掉你的IP,服务器IP又不容易改,另外耗用的带宽也是挺贵的。建议看一下Beautifulsoap。
MetaSeeker中的网络爬虫就属于后者。
MetaSeeker工具包利用Mozilla平台的能力,只要是Firefox看到的东西,它都能提取。
MetaSeeker工具包是免费使用的
特点:网页抓取、信息提取、数据抽取工具包,操作简单
11、Playfish
playfish是一个采用java技术,综合应用多个开源java组件实现的网页抓取工具,通过XML配置文件实现高度可定制性与可扩展性的网页抓取工具
使用方法,1.下载右边的.war包导入到eclipse中,2.使用WebContent/sql下的wcc.sql文件建立一个范例数据库,3.修改src包下wcc.core的dbConfig.txt,将用户名与密码设置成你自己的mysql用户名密码。4.然后运行SystemCore,运行时候会在控制台,无参数会执行默认的example.xml的配置文件,带参数时候名称为配置文件名。
系统自带了3个例子,分别为baidu.xml抓取百度知道,example.xml抓取我的javaeye的博客,bbs.xml抓取一个采用discuz论坛的内容。
特点:通过XML配置文件实现高度可定制性与可扩展性
12、Spiderman
Spiderman是一个基于微内核+插件式架构的网络蜘蛛,它的目标是通过简单的方法就能将复杂的目标网页信息抓取并解析为自己所需要的业务数据。
怎么使用?
首先,确定好你的目标网站以及目标网页(即某一类你想要获取数据的网页,例如网易新闻的新闻页面)
然后,打开目标页面,分析页面的HTML结构,得到你想要数据的XPath,具体XPath怎么获取请看下文。
最后,在一个xml配置文件里填写好参数,运行Spiderman吧!
特点:灵活、扩展性强,微内核+插件式架构,通过简单的配置就可以完成数据抓取,无需编写一句代码
13、webmagic
webmagic的是一个无须配置、便于二次开发的爬虫框架,它提供简单灵活的API,只需少量代码即可实现一个爬虫。
webmagic采用完全模块化的设计,功能覆盖整个爬虫的生命周期(链接提取、页面下载、内容抽取、持久化),支持多线程抓取,分布式抓取,并支持自动重试、自定义UA/cookie等功能。
webmagic包含强大的页面抽取功能,开发者可以便捷的使用cssselector、xpath和正则表达式进行链接和内容的提取,支持多个选择器链式调用。
特点:功能覆盖整个爬虫生命周期,使用Xpath和正则表达式进行链接和内容的提取。
备注:这是一款国产开源软件,由黄亿华贡献
14、Web-Harvest
Web-Harvest是一个Java开源Web数据抽取工具。它能够收集指定的Web页面并从这些页面中提取有用的数据。Web-Harvest主要是运用了像XSLT,XQuery,正则表达式等这些技术来实现对text/xml的操作。
特点:运用XSLT、XQuery、正则表达式等技术来实现对Text或XML的操作,具有可视化的界面
15、WebSPHINX
WebSPHINX是一个Java类包和Web爬虫的交互式开发环境。Web爬虫(也叫作机器人或蜘蛛)是可以自动浏览与处理Web页面的程序。WebSPHINX由两部分组成:爬虫工作平台和WebSPHINX类包。
开发语言:Java
特点:由两部分组成:爬虫工作平台和WebSPHINX类包
16、YaCy
YaCy基于p2p的分布式Web搜索引擎.同时也是一个Http缓存代理服务器.这个项目是构建基于p2pWeb索引网络的一个新方法.它可以搜索你自己的或全局的索引,也可以Crawl自己的网页或启动分布式Crawling等.
特点:基于P2P的分布式Web搜索引擎
17、QuickRecon
QuickRecon是一个简单的信息收集工具,它可以帮助你查找子域名名称、performzonetransfe、收集电子邮件地址和使用microformats寻找人际关系等。QuickRecon使用python编写,支持linux和windows操作系统。
特点:具有查找子域名名称、收集电子邮件地址并寻找人际关系等功能
18、PyRailgun
这是一个非常简单易用的抓取工具。支持抓取javascript渲染的页面的简单实用高效的python网页爬虫抓取模块
特点:简洁、轻量、高效的网页抓取框架
备注:此软件也是由国人开放
19、Scrapy
Scrapy是一套基于基于Twisted的异步处理框架,纯python实现的爬虫框架,用户只需要定制开发几个模块就可以轻松的实现一个爬虫,用来抓取网页内容以及各种图片,非常之方便~
特点:基于Twisted的异步处理框架,文档齐全
20、hispider
HiSpiderisafastandhighperformancespiderwithhighspeed
严格说只能是一个spider系统的框架,没有细化需求,目前只是能提取URL,URL排重,异步DNS解析,队列化任务,支持N机分布式下载,支持网站定向下载(需要配置hispiderd.iniwhitelist).
特征和用法:
工作流程:
特点:支持多机分布式下载,支持网站定向下载
21、larbin
特点:高性能的爬虫软件,只负责抓取不负责解析
22、Methabot
Methabot是一个经过速度优化的高可配置的WEB、FTP、本地文件系统的爬虫软件。
23、NWebCrawler
NWebCrawler是一款开源,C#开发网络爬虫程序。
特性:
特点:统计信息、执行过程可视化
24、Sinawler
国内第一个针对微博数据的爬虫程序!原名“新浪微博爬虫”。
本程序的特点:
1、6个后台工作线程,最大限度挖掘爬虫性能潜力!
2、界面上提供参数设置,灵活方便
3、抛弃app.config配置文件,自己实现配置信息的加密存储,保护数据库帐号信息
4、自动调整请求频率,防止超限,也避免过慢,降低效率
5、任意对爬虫控制,可随时暂停、继续、停止爬虫
6、良好的用户体验
25、spidernet
spidernet是一个以递归树为模型的多线程web爬虫程序,支持text/html资源的获取.可以设定爬行深度,最大下载字节数限制,支持gzip解码,支持以gbk(gb2312)和utf8编码的资源;存储于sqlite数据文件.
源码中TODO:标记描述了未完成功能,希望提交你的代码.
特点:以递归树为模型的多线程web爬虫程序,支持以GBK(gb2312)和utf8编码的资源,使用sqlite存储数据
26、WebCrawler
martandSimpleWebCrawler是一个Web爬虫框架。集成Lucene支持。该爬虫可以从单个链接或一个链接数组开始,提供两种遍历模式:最大迭代和最大深度。可以设置过滤器限制爬回来的链接,默认提供三个过滤器ServerFilter、BeginningPathFilter和RegularExpressionFilter,这三个过滤器可用AND、OR和NOT联合。在解析过程或页面加载前后都可以加监听器。介绍内容来自Open-Open
27、网络矿工
网站数据采集软件网络矿工采集器(原soukey采摘)
Soukey采摘网站数据采集软件是一款基于.Net平台的开源软件,也是网站数据采集软件类型中唯一一款开源软件。尽管Soukey采摘开源,但并不会影响软件功能的提供,甚至要比一些商用软件的功能还要丰富。
特点:功能丰富,毫不逊色于商业软件
28、OpenWebSpider
OpenWebSpider是一个开源多线程WebSpider(robot:机器人,crawler:爬虫)和包含许多有趣功能的搜索引擎。
特点:开源多线程网络爬虫,有许多有趣的功能
29、PhpDig
PhpDig是一个采用PHP开发的Web爬虫和搜索引擎。通过对动态和静态页面进行索引建立一个词汇表。当搜索查询时,它将按一定的排序规则显示包含关键字的搜索结果页面。PhpDig包含一个模板系统并能够索引PDF,Word,Excel,和PowerPoint文档。PHPdig适用于专业化更强、层次更深的个性化搜索引擎,利用它打造针对某一领域的垂直搜索引擎是最好的选择。
特点:具有采集网页内容、提交表单功能
30、ThinkUp
ThinkUp是一个可以采集推特,facebook等社交网络数据的社会媒体视角引擎。通过采集个人的社交网络账号中的数据,对其存档以及处理的交互分析工具,并将数据图形化以便更直观的查看。
特点:采集推特、脸谱等社交网络数据的社会媒体视角引擎,可进行交互分析并将结果以可视化形式展现
31、微购
32、Ebot
Ebot是一个用ErLang语言开发的可伸缩的分布式网页爬虫,URLs被保存在数据库中可通过RESTful的HTTP请求来查询。
特点:可伸缩的分布式网页爬虫
33、Spidr
Spidr是一个Ruby的网页爬虫库,可以将整个网站、多个网站、某个链接完全抓取到本地。