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下载合肥工业大学官网上全部的网页和文件。





爬虫内核提供哪些功能?

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遍历(尤其是对于深网爬取,如微博、动态页面)。

  


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
WebCollector是一个无须配置、便于二次开发的Java爬虫框架(内核),它提供精简的的API,只需少量代码即可实现一个功能强大的爬虫WebCollector-Hadoop是WebCollector的Hadoop版本,支持分布式爬取WebCollector致力于维护一个稳定、可扩的爬虫内核,便于开发者进行灵活的二次开发。内核具有很强的扩展性,用户可以在内核基础上开发自己想要的爬虫。源码中集成了Jsoup,可进行精准的网页解析。2.x版本中集成了selenium,可以处理JavaScript生成的数据。 WebCollector特性: 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机制,可为每个爬虫定制配置信息。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值