〇、Java爬虫框架有哪些?
1.nutch:Apache下开源爬虫项目,适合做搜索引擎,分布式爬虫只是其中一个功能,功能丰富,文档完整。
2.heritrix:比较成熟,用的人较多,有自己的web管理控制台,包含了一个HTTP服务器。
3.crowler4j:只具有爬虫的核心功能,上手简单。
4.webmagic:一个可伸缩的爬虫框架,涵盖爬虫整个生命周期:下载、URL管理、内容提取和持久化。
5.gecco:轻量集网络爬虫,整合了jsoup、httpclient、fastjson、spring、htmlunit、redission等优秀框架。
6.webcollector:一个无需配置、便于二次开发的爬虫框架,参考了crawler4j。
4、5、6皆为国人所写。
一、网络爬虫基本概念
基本的网络爬虫框架如图所示:
基本的网络爬虫工作流程如下:
1.精心挑选一部分种子URL;
2.将这些URL放入待抓取URL队列;
3.从待抓取URL队列中取出URL,解析DNS得到主机ip地址,将网页内容下载下来,解析有用的内容存储到库中,将这些URL放入已抓取URL队列;
4.分析已抓取URL队列中的URL,分析其中包含的其他URL,抽取新的URL放入待抓取队列,重复循环。
基本的抓取策略:
1.深度优先遍历策略:一个链接一个链接跟踪下去,处理完这条线路之后再转入下一个起始页,继续跟踪链接。
2.宽度优先遍历策略:将新下载网页中发现的链接直接插入待抓取URL队列的末尾。也就是指网络爬虫会先抓取起始网页中链接的所有网页,然后再选择其中的一个链接网页,继续抓取在此网页中链接的所有网页。
二、WebCollector框架介绍
作为我的第一款入门爬虫框架,先不论其好坏,重点是需要借助该框架理解爬虫的原理、流程和关键技术,故下面进行详细梳理。
WebCollector 是一个无须配置、便于二次开发的 Java 爬虫框架(内核),它提供精简的的 API,只需少量代码即可实现一个功能强大的爬虫。WebCollector-Hadoop 是 WebCollector 的 Hadoop 版本,支持分布式爬取。
WebCollector 致力于维护一个稳定、可扩的爬虫内核,便于开发者进行灵活的二次开发。内核具有很强的扩展性,用户可以在内核基础上开发自己想要的爬虫。源码中集成了 Jsoup,可进行精准的网页解析。2.x 版本中集成了 selenium,可以处理 JavaScript 生成的数据。
其内核架构如图所示:
WebCollector 2.X版本特性
1.自定义遍历策略,可完成更为复杂的遍历业务,例如分页、AJAX。
2.可以为每个URL设置附加信息(MetaData),利用附加信息可以完成深度获取、锚文本获取、引用页面获取、POST参数传递、增量更新等。
3.使用插件机制,用户可定制自己的Http请求、过滤器、执行器等插件。
4.内置一套基于内存的插件(RamCrawler),不依赖文件系统或数据库,适合一次性爬取,例如实时爬取搜索引擎。
5.内置一套基于Berkeley DB的插件(BreadthCrawler),适合处理长期和大量级的任务,具有断点爬取功能。
6.集成selenium,可以对JavaScript生成信息进行抽取。
7.可轻松自定义http请求,并内置多代理随机切换功能,可通过定义http请求实现模拟登录。
8.使用slf4j作为日志门面,可对接多种日志。
9.使用类似Hadoop的Configuration机制,可为每个爬虫定制配置信息。
WebCollector与Htt