爬虫简介:

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

爬虫内核:

WebCollector致力于维护一个稳定、可扩的爬虫内核,便于开发者进行灵活的二次开发。内核具有很强的扩展性,用户可以在内核基础上开发自己想要的爬虫。源码中集成了Jsoup,可进行精准的网页解析。

量级:

WebCollector最常用的爬取器BreadthCrawler使用2^24的布隆过滤器进行URL管理,可处理2^24量级的数据,也就是3000W的网页。用户可以通过自定义插件来定制处理能处理更大量级数据的爬虫。

插件:

基于WebCollector内核,可以自己编写爬虫的http请求、链接解析器、爬取信息更新器、抓取器等模块,WebCollector把这些基于内核编写的模块称作"插件",通过不同的插件组合,可以在1分钟内,把WebCollector组装成一个全新的爬虫。

WebCollector内置了一套插件(cn.edu.hfut.dmic.webcollector.plugin.redis)。基于这套插件,可以把WebCollector的任务管理放到redis数据库上。在早期版本中,redis插件可以让爬虫处理较高量级的数据。从1.35版本开始,爬取器BreadthCrawler已经比使用redis插件的爬取器(RedisCrawler)具有更高的爬取量级。所以目前还是推荐使用BreadthCrawler作为爬取器。

用户可以根据自己的需求,去开发适合自己的插件。

MAVEN:

教程:

DEMO1:

用WebCollector制作一个爬取《知乎》并进行问题精准抽取的爬虫(JAVA)

设计框架:

Generator:抓取任务生成模块。

Filter:过滤器。对生成的任务进行过滤。

Fetcher:爬取任务。

Parser:解析任务(主要为链接抽取)。

Handler:消息机制。使用WebCollector的开发者通过handler可以快速定制自己的爬虫。WebCollector并没有使用Nutch的插件机制,而是使用handler来完成对爬虫功能的扩展。爬虫每遍历到一个页面,就会发送一个Message给Handler,开发者只要定制自己的Handler,即可对页面进行自定义操作。

java爬虫 webcollector_Java爬虫-WebCollector | 学步园相关推荐

  1. java爬虫webcollector_JAVA爬虫框架:WebCollector

    webCollector使用了Nutch的爬取逻辑(分层广度遍历),Crawler4j的的用户接口(覆盖visit方法,定义用户操作),以及一套自己的插件机制,设计了一套爬虫内核. WebCollec ...

  2. java中system_《java中System类》 | 学步园

    System类 System类是一个特殊类,它是一个公共最终类,不能被继承,也不能被实例化,即不能创建System类的对象.System类功能强大,与Runtime一起可以访问许多有用的系统功能.Sy ...

  3. java arp 攻击_用JAVA代码实现ARP攻击 | 学步园

    ARP攻击原理 一台电脑通过网络访问另一台电脑的时候,在数据链路层需要知道对方的MAC地址进行真正的物理通信. 而电脑上的应用程序通常都是根据另一台电脑的IP地址来和对方建立通信,这时候就需要有一个协 ...

  4. java 分层领域模型_Java领域模型 | 学步园

    为了补大家的遗憾,在此总结下ROBBIN的领域模型的一些观点和大家的补充,在网站和演讲中,robbin将领域模型初步分为4大类: 1,失血模型 2,贫血模型 3,充血模型 4,胀血模型 那么让我们看看 ...

  5. android java内存 c内存_Android NDK java和C\C++交互 | 学步园

    1.定义native方法并加载动态链接库: public class HelloJni extendsActivity { @Overridepublic voidonCreate(Bundle sa ...

  6. java反射性能问题_Java反射应用实例java反射的性能问题 | 学步园

    很多IOC等框架都使用反射来实现,例如Spring, Hibernate等, Java反射的方式实现的逻辑比普通类逻辑的效率是要差一些的(14至300倍左右), 具体可以参考我转载的一篇文章< ...

  7. java实现linux变量替换_linux java 配置 含环境变量 | 学步园

    一般情况下,我们都要将linux自带的OPENJDK卸载掉,然后安装SUN的JDK. 首先查看Linux自带的JDK是否已安装. 输入如下命令,查看已经安装的JAVA版本信息. Linux代码   j ...

  8. java自定义annotation_Java自定义annotation | 学步园

    1. Annotation需要声明为@interface 2.@Target:  表示该注解可以用于什么地方.可用ElementType枚举类型主要有: TYPE : 类.接口或enum声明 FIEL ...

  9. java dll 调用方法_关于Java调用dll的方法 | 学步园

    Java语言本身具有跨平台性,如果通过Java调用DLL的技术方便易用,使用Java开发前台界面可以更快速,也能带来跨平台性. Java调用C/C   写好的DLL库时,由于基本数据类型不同.使用字节 ...

  10. java winrar_Java使用winrar解压缩 | 学步园

    JAVA JDK中的解压缩似乎不能解压缩我们手工压缩的RAR文件,只能解压JDK中的API压缩的RAR 所以想出以下用WINRAR命令行方式的解压缩 package edu.nwpu.vcampus. ...

最新文章

  1. Spring中@Pattern的使用
  2. Ubuntu12.10 root用户登录设置
  3. C++实现glut绘制点、直线、多边形、圆
  4. python opencv-4.1.0 cv2.getTextSize()函数 (计算文本字符串的宽度和高度)
  5. WebSocket客户端连接成功后,返回的socket里有用的字段
  6. ajax包含mysql吗_php 实例ajax与mysql怎么只查询出一条数据?
  7. Linux系统编程----16(线程同步,互斥量 mutex,互斥锁的相关函数,死锁,读写锁)
  8. linux内核的I2C子系统详解3——i2c-core.c初步分析、I2C总线的匹配机制
  9. Science | 再创生命奇迹!日本科学家造出了不需要“父亲”的大鼠及小鼠
  10. 已知自然常数e的泰勒展开式是_泰勒公式:微分学的顶峰 (数学分析 · 导数的应用 (2))...
  11. python快速编程入门课本中的名片管理器_python——实现名片管理器
  12. 华铭智能属于芯片概念吗_华铭智能:子公司1个亿参股边缘计算独角兽九次方大数据!...
  13. Installation openQRM
  14. VR头显设备相关接口详解
  15. 作为学生,我是怎么半年赚到人生第一个三十万的
  16. 【计算机网络】思科实验(3):使用三层交换机实现跨VLAN间的通信
  17. 改变手机状态栏颜色常见的2种方法
  18. 极狐GitLab硬实力助力中国开源生态建设
  19. 数据结构-二叉树入门Go语言实现
  20. 2022年二级建造师考试机电工程练习题及答案

热门文章

  1. s400x ugee 驱动_联想_ThinkPad|ThinkCentre|ThinkStation服务与驱动下载_常见问题
  2. AltiumDesigner画图不求人12 AD库转换为PADS库
  3. Android进阶学习方法总结(内附阿里P7进阶学习全套资料)
  4. Android开机动画的动态替换
  5. 《C语言程序设计(第五版)谭浩强》学习笔记
  6. 基于Spingboot的HIS医院门诊信息系统
  7. 数据库系统工程师真题及详解(2015~2021)
  8. 25%的CPU利用率也能够让一台笔记本如此狼狈 (小红伞)
  9. VC2008配置设置(转)
  10. 使用 HTML 和 CSS 创建响应式猫猫图片库