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深度解析——爬虫内核的更多相关文章

  1. Java 8 Optional 类深度解析

    Java 8 Optional 类深度解析 身为一名Java程序员,大家可能都有这样的经历:调用一个方法得到了返回值却不能直接将返回值作为参数去调用别的方法.我们首先要判断这个返回值是否为null,只 ...

  2. Java基础常用类深度解析(包含常见排序算法)

    目录 一.工具类 1.1.工具类的设计 1.1.1.公共静态方法 1.2.单例模式 二.包装类 2.1.基本类型的包装类 2.1.1.Integer 2.1.1.1.Integer >> ...

  3. Java 8 Optional类深度解析

    身为一名Java程序员,大家可能都有这样的经历:调用一个方法得到了返回值却不能直接将返回值作为参数去调用别的方法.我们首先要判断这个返回值是否为null,只有在非空的前提下才能将其作为其他方法的参数. ...

  4. Java 8 Optional类深度解析(转)

    经常会遇到这样的问题,调用一个方法得到了返回值却不能直接将返回值作为参数去调用别的方法.我们首先要判断这个返回值是否为null,只有在非空的前提下才能将其作为其他方法的参数. 新版本的Java,比如J ...

  5. Java 8 Optional类深度解析(转载)

    身为一名Java程序员,大家可能都有这样的经历:调用一个方法得到了返回值却不能直接将返回值作为参数去调用别的方法.我们首先要判断这个返回值是否为null,只有在非空的前提下才能将其作为其他方法的参数. ...

  6. [转]Java 8 Optional类深度解析(null处理)

    原文链接:http://www.importnew.com/6675.html 本文由 ImportNew - 高俊阳 翻译自 javacodegeeks.欢迎加入翻译小组.转载请见文末要求. 身为一 ...

  7. Java基础(三) String深度解析

    String可以说是Java中使用最多最频繁.最特殊的类,因为同时也是字面常量,而字面常量包括基本类型.String类型.空类型. 一. String的使用 1. String的不可变性 /** * ...

  8. Java调用Kotlin程序深度解析

    异常: 在之前我们已经学习在Kotlin中的所有异常都是运行期的,而不像Java分为运行期和非运行期,下面用代码来演示一下,先建一个Java的异常: 然后在Kotlin中来调用一下该Java中的方法 ...

  9. JAVA爬虫 WebCollector

    JAVA爬虫 WebCollector 爬虫简介: WebCollector是一个无须配置.便于二次开发的JAVA爬虫框架(内核),它提供精简的的API,只需少量代码即可实现一个功能强大的爬虫. 爬虫 ...

随机推荐

  1. Spring Thread Pool 线程池的应用

    Spring and Java Thread example 扫扫关注"茶爸爸"微信公众号 坚持最初的执着,从不曾有半点懈怠,为优秀而努力,为证明自己而活. Download it ...

  2. [置顶] 正则表达式应用:匹配email地址

           email的组成主要有三部分         1用户名部分 2@   3域名部分        1用户名部分         用户名一般有数值字母下划线组成,所以正则表达式为:[\da- ...

  3. JAVA UTF-8字符转换为GBK

    String t = "\u53d6"; try { String gbk=URLEncoder.encode(t,"GBK"); System.out.pri ...

  4. 配置nexus仓库

    Nexus有许多默认仓库:Central,Releases,Snapshots,和3rd Party 1.配置central仓库 Nexus内置了Maven中央代理仓库Central.选择仓库列表中的 ...

  5. AspNet MVC4 教学-22:Asp.Net MVC4 Partial View 技术高速应用Demo

    A.创建Basic类型的MVC项目. B.Model文件夹下,创建文件: LoginModel.cs: using System; using System.Collections.Generic; ...

  6. MongoDB---性能优化---(1)

    MONGODB数据架构 升级解决.计划 发现问题  应用server用户数的突然涌入,创建server反应慢  检查server,我发现,每次反应非常慢,至30ops  检查过程  .发现数据库查询缓 ...

  7. jQuery Easy UI Resizable(调整大小)组件

    Resizable(调整大小)组件,easyui基础组件之中的一个.调整大小就是能够对元素能够拖着调整大小,这个组件不依赖于其它组件,使用比較简单,相关的属性.事件都 在样例中介绍了. 演示样例: & ...

  8. EEPlat PaaS VS Saleforce force.com

    综述 EEPlatPaaS和Saleforce的Force.com都是元数据驱动应用的解决方式.整体而言,Force.com提供了更上层的解决方式,屏蔽了SQL语句.数据库:EEPlat更加底层,有更 ...

  9. hdu1370-Biorhythms

    http://acm.hdu.edu.cn/showproblem.php?pid=1370 中国剩余定理 已知(n+d)%23=a;   (n+d)%28=b;   (n+c)%33=i       ...

  10. 性能测试之LoardRunner 自动关联

    1.什么是自动关联? 2.实例介绍 以下是详细介绍: 自动化关联:它是VuGen提供的自动化扫描关联处理策略,它的原理是对同一个脚本运行和录制时的服务器返回进行比较,来自动查找变化的部分,并且提示是否 ...