网络爬虫按照系统结构和实现技术,大致可以分为以下几种类型(实际的网络爬虫系统通常是几种爬虫技术相结合实现的):

①  通用爬虫:爬行对象从一些种子 URL 扩充到整个 Web,主要为门户站点搜索引擎和大型 Web 服务提供商采集数据。这类网络爬虫的爬行范围和数量巨大,对于爬行速度和存储空间要求较高,对于爬行页面的顺序要求相对较低;

②  定向爬虫:选择性地爬行那些与预先定义好的主题相关页面的网络爬虫。只需要爬行与主题相关的页面,极大地节省了硬件和网络资源,保存的页面也由于数量少而更新快,还可以很好地满足一些特定人群对特定领域信息的需求;

③  增量爬虫:对已下载网页采取增量式更新和只爬行新产生的或者已经发生变化网页的爬虫,它能够在一定程度上保证所爬行的页面是尽可能新的页面。不重新下载没有发生变化的页面,可有效减少数据下载量,及时更新已爬行的网页,减小时间和空间上的耗费,但是增加了爬行算法的复杂度和实现难度;

④  深层爬虫:对深层网页的爬取。深层网页是那些大部分内容不能通过静态链接获取的、隐藏在搜索表单后的,只有用户提交一些关键词才能获得的 Web 页面。例如那些用户注册后内容才可见的网页就属于这个范畴。

      网络爬虫诞生之初,大都是由解释型脚本语言编写(主要是python)。但随着互联网的高速发展,各主流开发语言基本都出现了一些出色的爬虫框架。整理了目前业内比较有名的框架如下:

✱   Scrapy(Python):一个快速、高效且易扩展的爬虫框架。可快速整合到python主流的web应用框架,并且能够使用redis等中间件快速搭建起分布式集群;

✱   Pyspider(Python):功能强大的爬虫框架,有自己的web UI;

✱   Apache Nutch(Java):灵活及高可扩展的爬虫框架;

✱   Crawler4j(Java):简单易用、轻量级的网络爬虫;

✱   Scraperjs(JS):高可用,功能强大的网络爬虫;

✱   node-crawler(JS):封装了简单易用的API;

✱  Goutte(php):可快速整合到Laravel引用框架;

✱   Pholcus(GO):分布式、高并发的强大爬虫,可通过web UI配置爬取策略(扩展性较差);

✱   go_spider(GO):一个出色,并且支持高并发的爬虫。扩展性强。