A lite distributed Java spider framework.

这是一个轻量级的分布式java爬虫框架

特点

这是一个强大,但又轻量级的分布式爬虫框架。jlitespider天生具有分布式的特点,各个worker之间需要通过一个或者多个消息队列来连接。消息队列我的选择是rabbitmq。worker和消息之间可以是一对一,一对多,多对一或多对多的关系,这些都可以自由而又简单地配置。消息队列中存储的消息分为四种:url,页面源码,解析后的结果以及自定义的消息。同样的,worker的工作也分为四部分:下载页面,解析页面,数据持久化和自定义的操作。

用户只需要在配置文件中,规定好worker和消息队列之间的关系。接着在代码中,定义好worker的四部分工作。即可完成爬虫的编写。

总体的使用流程如下:

启动rabbitmq。

在配置文件中定义worker和消息队列之间的关系。

在代码中编写worker的工作。

最后,启动爬虫。

安装

使用maven:

com.github.luohaha

jlitespider

0.4.3

直接下载jar包:

点击下载。

设计思想

虽然JLiteSpider将抓取流程抽象成了几个部分,但这并不意味着你就必须遵从这种抽象,你应该根据自己的应用场景,来作出最符合效率最大化的使用决策。比如,如果你抓取的网页源码较大,如果把网页源码也存入消息队列,会导致消息队列负担过大。所以这个时候比较好的做法是将下载和解析的流程合并,直接向消息队列输出解析后的结果。

所以,虽然JLiteSpider帮你抽象出了抓取过程中的不同阶段,但这完全是选择性的,用户完全是自由的。我在设计JLiteSpider的时候,尽力保障了自由。后面要介绍到的Worker和消息队列的自由配置,以及添加了freeman,同样是这种设计思路的体现。

java 爬虫框架 j_一个分布式java爬虫框架JLiteSpider相关推荐

  1. JAVA线程池管理及分布式HADOOP调度框架搭建

    平时的开发中线程是个少不了的东西,比如tomcat里的servlet就是线程,没有线程我们如何提供多用户访问呢?不过很多刚开始接触线程的开发攻城师却在这个上面吃了不少苦头.怎么做一套简便的线程开发模式 ...

  2. java搭建线程池框架,JAVA线程池管理及分布式HADOOP调度框架搭建

    大家看到了线程的好处了吧!单线程需要10S,10个线程只需要1S.充分利用了系统资源实现并行计算.也许这里会产生一个误解,是不是增加的线程个数越多效率越高.线程越多处理性能越高这个是错误的,范式都要合 ...

  3. 网络爬虫笔记 :一个简单的爬虫框架

    学了两节课的 Python 爬虫,也算是入门了吧.敲了两天的案例代码之后,我突然发现,这些代码虽然功能不同,写法各异,但是终归是有章可循的,整体框架是一致的.所以我自己整理了一个简单的爬虫框架,适合初 ...

  4. 【Java进阶营】一个资深Java架构师告诉你我们是如何将一个项目做烂的

    首先我想声明一个项目做烂不是你一个人挖坑就行的,这是一个很大的工程 需要团队协作 既然标题都用到了"烂"这个词,那什么才是烂呢? 在你的项目里,"烂"和&quo ...

  5. java脚本_写一个在线Java脚本执行器

    在生产环境中,有时候我们想要快速执行一段代码,但是又不得不经历上线的痛苦(分情况哈,有时候这种痛苦是必须的)或者在某些场景中,不能重启避免破坏现场,那么有个在线脚本执行器就最好不过了.于是在工作之余, ...

  6. java 声明是否合法,一个合法的Java源程序中定义了4个类,其中属性为public的类可能有( )个...

    问题:一个合法的Java源程序中定义了4个类,其中属性为public的类可能有( )个 更多相关问题 在平面几何里,有勾股定理:"设的两边互相垂直,则"拓展到空间,类比平面几何的勾 ...

  7. java 分布式服务器通信,Pigeon是大众点评的一个分布式服务通信框架RPC

    Pigeon Documentation Release Notes Comitters 苗向彬,saber.miao Copyright and license Copyright 2015 Dia ...

  8. java培训 三年_一个三年java开发经验的程序员:java学习路线

    做开发的工作已经三年多了,说起来实在是惭愧,自己的知识树还像一棵小草一样,工作中使用到了许多的知识和技术,不过系统性不够.根基不牢.并且不够深入!当然,慢慢的我也更加的清楚,我需要学习一些什么样的知识 ...

  9. java 算出下一个工作日,Java:计算一个日期加下指定工作日数(排除周六周日和一系列节日)...

    Java:计算一个日期加上指定工作日数(排除周六周日和一系列节日) 工作时遇到的,随便写了个,欢迎高手点评: 核心代码: package www.sjjjob.com.date; import jav ...

最新文章

  1. Problem 62 Java中的final关键字?
  2. 如何将Felgo程序部署到Android中
  3. 4种方法让SpringMVC接收多个对象(转:http://blog.csdn.net/lutinghuan/article/details/46820023)
  4. android 4.0 电话录音,ANDROID音频系统散记之四:4.0音频系统HAL初探
  5. Java 字符串拼接 StringBuilder() StringBuffer
  6. window tomcat 端口冲突问题解决
  7. pythonshell窗口是什么_python与shell的3种交互方式介绍
  8. 谈谈线下消费分期的风险点
  9. 家用无线路由器的相关设置
  10. FPGA原理图设计----Arria II 系列FPGA设计(SATA)
  11. Windows7下IIS7.5的伪静态URL Rewrite安装配置和案例综合
  12. Vue教程20:Vuex入门
  13. php支持微信h5支付,PHP接入微信H5支付的方法示例
  14. 运筹学 美国人在计算机上实现的四,运筹学试卷及答案.
  15. linux使用jinja2模板_flask中jinjia2模板使用详解2
  16. ubuntu14.04安装360随身wifi 2代
  17. 基于Java的文本相似度计算
  18. 使用JedisClusters批量高效删除redis中的key
  19. Python全国计算机等级考试(2021)
  20. 北京电子科技学院计算机考研资料汇总

热门文章

  1. 将文件拖拽到.py文件上以处理它(从DropHandler说起)
  2. 基于guided image filtering的图像去雾 opencv实现
  3. 关于IGBT反并联二极管反向恢复
  4. 外部排序--归并算法实现
  5. Android 基站定位源代码
  6. 如何使用DBeaver连接MySQL数据库?
  7. Qt不使用unicode字符集
  8. 什么是超大规模数据中心?它们是如何工作的?
  9. 跨越行业壁垒:金融校对软件在跨国金融业务中的应用
  10. php音视频点播,使用 PHP 搭建自己的视频点播网站