java爬虫webControl学习笔记

<dependencies>
    <dependency>
        <groupId>cn.edu.hfut.dmic.webcollector</groupId>
        <artifactId>WebCollector</artifactId>
        <version>2.70</version>
    </dependency>
</dependencies>

一、WebCollerctor 简介

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

2、源码中集成了 Jsoup,可进行精准的网页解析,2.x 版本中集成了 selenium,可以处理 JavaScript 生成的数据。

3、WebCollector-Hadoop 是 WebCollector 的 Hadoop 版本,支持分布式爬取。

4、Github 上项目托管地址:https://github.com/CrawlScript/WebCollector

5、GitEE 上开源地址:http://git.oschina.net/webcollector/WebCollector

6、开源中国教程地址:http://www.oschina.net/p/webcollector

7、网络爬虫与数据挖掘教程地址:http://datahref.com/

内核架构图

在这里插入图片描述

内核架构图

在这里插入图片描述

CrawlDB: 任务数据库,爬虫的爬取任务(类似URL列表)是存放在CrawlDB中的,CrawlDB根据DbUpdater和Generator所选插件不同,可以有多种形式,如文件、redis、MySQL、mongodb等。

Injector:种子注入器,负责第一轮爬取时,向CrawlDB中提交爬取任务。在断点续爬的时候,不需要通过Injector向CrawlDB注入种子,因为CrawlDB中已有爬取任务。

Generator: 任务生成器,任务生成器从CrawlDB获取爬取任务,并进行过滤(正则、爬取间隔等),将任务提交给抓取器。

Fetcher: 抓取器,Fetcher是爬虫最核心的模块,Fetcher负责从Generator中获取爬取任务,用线程池来执行爬取任务,并对爬取的网页进行链接解析,将链接信息更新到CrawlDB中,作为下一轮的爬取任务。在网页被爬取成功/失败的时候,Fetcher会将网页和相关信息以消息的形式,发送到Handler的用户自定义模块,让用户自己处理网页内容(抽取、存储)。

DbUpdater: 任务更新器,用来更新任务的状态和加入新的任务,网页爬取成功后需要更新CrawlDB中的状态,对网页做解析,发现新的连接,也需要更新CrawlDB。

Handler:消息发送/处理器,Fetcher利用Handler把网页信息打包,发送到用户自定义操作模块。

User Defined Operation: 用户自定义的对网页信息进行处理的模块,例如网页抽取、存储。爬虫二次开发主要就是自定义User Defined Operation这个模块。实际上User Defined Operation也是在Handler里定义的。

RequestFactory:Http请求生成器,通过RequestFactory来选择不同的插件,来生成Http请求,例如可以通过httpclient插件来使用httpclient作为爬虫的http请求,或者来使用可模拟登陆新浪微博的插件,来发送爬取新浪微博的http请求。

ParserFactory: 用来选择不同的链接分析器(插件)。爬虫之所以可以从一个网页开始,向多个网页不断地爬取,就是因为它在不断的解析已知网页中的链接,来发现新的未知网页,然后对新的网页进行同样的操作。

二、WebCollector 2.x

1、WebCollector 2.x 版本特性:

  • 自定义遍历策略,可完成更为复杂的遍历业务,例如分页、AJAX
  • 可以为每个 URL 设置附加信息(MetaData),利用附加信息可以完成很多复杂业务,例如深度获取、锚文本获取、引用页面获取、POST
    参数传递、增量更新等。
  • 使用插件机制,用户可定制自己的Http请求、过滤器、执行器等插件。
  • 内置一套基于内存的插件(RamCrawler),不依赖文件系统或数据库,适合一次性爬取,例如实时爬取搜索引擎。
  • 内置一套基于 Berkeley
    DB(BreadthCrawler)的插件:适合处理长期和大量级的任务,并具有断点爬取功能,不会因为宕机、关闭导致数据丢失。
  • 集成 selenium,可以对 JavaScript 生成信息进行抽取
  • 可轻松自定义 http 请求,并内置多代理随机切换功能。 可通过定义 http 请求实现模拟登录。
  • 使用 slf4j 作为日志门面,可对接多种日志
  • 使用类似Hadoop的Configuration机制,可为每个爬虫定制配置信息

2、WebCollector 2.x教程:

WebCollector配置

http://datahref.com/archives/10

WebCollector入门

http://datahref.com/archives/22

WebCollector特色功能

WebCollector持久化

WebCollector高级爬虫定制

WebCollector处理Javascript

WebCollector示例

参考笔记

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值