JAVA网络爬虫WebCollector深度解析——爬虫内核
WebCollector爬虫官网:https://github.com/CrawlScript/WebCollector
技术讨论群:250108697
怎样将爬虫内核导入自己的项目?
1.进入爬虫官网http://crawlscript.github.io/WebCollector/。下载压缩包。解压。
2.解压后找到“webcollector-版本-bin.zip”,解压。
3.将“webcollector-版本-bin.zip”解压后全部的jar,导入你的项目,就可以使用爬虫内核。
爬虫内核的demo
进入“webcollector-版本-bin.zip”解压后所在的目录(Windows用资源管理器。Linux用命令行)。
Windows:双击start.bat
Linux:运行sh start.sh
就可以看到一个简单的DEMO,这个DEMO能够爬取整站的网页(包含图片、文件、JS、CSS),并依照站点原来的文件路径存储到本地。
图中是用这个DEMO下载合肥工业大学官网上全部的网页和文件。
watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvQUpBWEh1/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" alt="">
爬虫内核提供哪些功能?
1.一套可扩展框架。对于大多数爬虫开发人员来说,须要一个稳定、易懂的框架。
基于框架去做自己的爬虫。
2.爬虫所需的基本类库。
1)html源代码获取(文件下载)。
2)文件操作。
3)html源代码解析(抽取)。
4)线程池。
5)URL生成器(遍历器)。
6)消息机制(各组件通信)。
基本类库:
在介绍爬虫框架之前,先介绍一下基本类库。
假设您不想使用我们的爬虫框架。仅仅是想做一个主要的爬虫或者网页信息收集产品,或者您仅仅是想做一个简单的HTML源代码获取器,能够导入WebCollector的jar包,直接调用爬虫内核提供的类库。
爬虫框架:
爬虫框架会在兴许文章中具体介绍。这里仅仅介绍它与其它爬虫框架的一些差别。
WebCollector与其它爬虫框架最大的差别在于它提供了“消息机制”和“URL生成器”。
1)消息机制:
以往的大型爬虫框架。Heritrix、Nutch、Crawler4j,都是通过插件或者重载代码的机制,去实现对爬取信息的处理(解析、保存)。WebCollector提供了一套强大的消息机制(Handler)。
比如Crawler4j,假设你须要定制爬取时对每一个页面的操作,须要重载WebCrawler类中的相关函数,而且不能在执行时定制,必须在编译前就定制一个继承WebCrawler类的类,细节请看:http://code.google.com/p/crawler4j/
可是对于WebCollector,你仅仅须要定制一个Handler
Handler gene_handler = new Handler() {
@Override
public void handleMessage(Message msg) {
Page page = (Page) msg.obj;
System.out.println(page.html);
}
};
将这个handler传给遍历器就可以。
2)URL生成器:
Heritrx、Nutch、Crawler4j仅仅提供广度遍历的网页遍历方式。并且非常难通过他们自带的插件机制去改动遍历方式。所以WebCollector里提供了URL生成器(Generator),自己定义URL生成器能够完毕各种形式的URL遍历(尤其是对于深网爬取,如微博、动态页面)。
JAVA网络爬虫WebCollector深度解析——爬虫内核的更多相关文章
- Java 8 Optional 类深度解析
Java 8 Optional 类深度解析 身为一名Java程序员,大家可能都有这样的经历:调用一个方法得到了返回值却不能直接将返回值作为参数去调用别的方法.我们首先要判断这个返回值是否为null,只 ...
- Java基础常用类深度解析(包含常见排序算法)
目录 一.工具类 1.1.工具类的设计 1.1.1.公共静态方法 1.2.单例模式 二.包装类 2.1.基本类型的包装类 2.1.1.Integer 2.1.1.1.Integer >> ...
- Java 8 Optional类深度解析
身为一名Java程序员,大家可能都有这样的经历:调用一个方法得到了返回值却不能直接将返回值作为参数去调用别的方法.我们首先要判断这个返回值是否为null,只有在非空的前提下才能将其作为其他方法的参数. ...
- Java 8 Optional类深度解析(转)
经常会遇到这样的问题,调用一个方法得到了返回值却不能直接将返回值作为参数去调用别的方法.我们首先要判断这个返回值是否为null,只有在非空的前提下才能将其作为其他方法的参数. 新版本的Java,比如J ...
- Java 8 Optional类深度解析(转载)
身为一名Java程序员,大家可能都有这样的经历:调用一个方法得到了返回值却不能直接将返回值作为参数去调用别的方法.我们首先要判断这个返回值是否为null,只有在非空的前提下才能将其作为其他方法的参数. ...
- [转]Java 8 Optional类深度解析(null处理)
原文链接:http://www.importnew.com/6675.html 本文由 ImportNew - 高俊阳 翻译自 javacodegeeks.欢迎加入翻译小组.转载请见文末要求. 身为一 ...
- Java基础(三) String深度解析
String可以说是Java中使用最多最频繁.最特殊的类,因为同时也是字面常量,而字面常量包括基本类型.String类型.空类型. 一. String的使用 1. String的不可变性 /** * ...
- Java调用Kotlin程序深度解析
异常: 在之前我们已经学习在Kotlin中的所有异常都是运行期的,而不像Java分为运行期和非运行期,下面用代码来演示一下,先建一个Java的异常: 然后在Kotlin中来调用一下该Java中的方法 ...
- JAVA爬虫 WebCollector
JAVA爬虫 WebCollector 爬虫简介: WebCollector是一个无须配置.便于二次开发的JAVA爬虫框架(内核),它提供精简的的API,只需少量代码即可实现一个功能强大的爬虫. 爬虫 ...
随机推荐
- 【译】在Asp.Net中操作PDF - iTextSharp - 使用字体
原文 [译]在Asp.Net中操作PDF - iTextSharp - 使用字体 紧接着前面我对iTextSharp简介博文,iTextSharp是一个免费的允许Asp.Net对PDF进行操作的第三方 ...
- mysql 监控 大批量的插入,删除,和修改
监控大批量的插入,修改和删除: mysql> insert into aaa select * from aaa; mysql> SELECT trx_id, trx_state, trx ...
- 基于visual Studio2013解决C语言竞赛题之0804成绩筛选
题目
- TPersistent的三个用途(读写DFM文件,Assign,RTTI),最主要还是第三个用途
不是什么类对象都需要RTTI,如果把它放在TObject,除了增加可执行文件的大小以及运行内存空间以外,没什么好处.
- WCF技术剖析之二十一:WCF基本异常处理模式[中篇]
原文:WCF技术剖析之二十一:WCF基本异常处理模式[中篇] 通过WCF基本的异常处理模式[上篇], 我们知道了:在默认的情况下,服务端在执行某个服务操作时抛出的异常(在这里指非FaultExcept ...
- ASP.NET - 记住滚动条的位置
MaintainScrollPositionOnPostback ="true" 如果是滚动条在最下面,那么如果刷新页面,滚动条回到最上面. 使用这个属性之后,滚动条会在刷新之前的 ...
- sql: PL/SQL proc
A PL/SQL block has the following structure: [DECLARE declaration_statements ] BEGIN executable_state ...
- 基于visual Studio2013解决面试题之0802数字最多元素
题目
- NGUI: Documentation
Video Tutorials Basic Tutorial (v.2.5.0+) SD & HD atlas switching (advanced) Packed Font (advanc ...
- MySQL数据库触发器(trigger)
MySQL触发器(trigger):监视某种情况并触发某种操作 一:四要素 触发时间:before/after 地点:table 监视操作:insert/update/delete 触发操作:inse ...