`
ldd600
  • 浏览: 101803 次
  • 性别: Icon_minigender_1
  • 来自: 上海
博客专栏
47bb354f-8b5f-3ea6-a206-c7ead38c741c
Hyperic插件开发不完...
浏览量:11078
社区版块
存档分类
最新评论

Java爬虫框架(二)--模块设计之一

 
阅读更多

一、        模块

1.      Scheduler

Scheduler负责启动爬虫,停止爬虫,监控爬虫的状态。



 

Scheduler在调度爬虫时,借助于Quartz,设置爬虫在某个时刻启动。同一个名字的爬虫是stateful的。

Task:初始化任务。

Trigger: 触发器,描述何时触发爬虫。

开放Scheduler远程API,可以通过爬虫配置管理平台管理和监控爬虫。

2.      Task Master



 

TaskMaster:管理Task的执行过程,提交TaskWorkerThreadPool执行。

TaskController:独立线程,控制何时停止TaskMasterDelayController和它自己

ExecutionState:描述TaskMaster当前状态

TaskQueue:存放未爬取的所有Task。可以是基于内存的,也可以是持久化的。不同的实现。

DelayTaskQueue:有些网站,如果连续访问,会禁止爬取,遇到这种情况,我们会暂时停止对该网页的爬取,我们需要一个DelayTaskQueue存放被延迟的Task

DelayController:独立线程,不停的检测DelayTaskQueue中的Task是否过了限制期,过了限制期,移入到TaskQueue中等待爬取

Task:描述一个爬取任务。

HTMLTask:网页爬取任务

DBTaskDB爬取任务

DelayPolicy:定义Task的延迟策略,比如对同一个域名的网站,采取每隔5秒钟的爬取一次的方案。如果发现遭到限制,对同一个域名的网站,采取停歇10分钟的策略。

考虑到对将来对数据爬虫的支持,抽象了统一接口。数据库对TaskFetcherparserHandlerWorker都有自己的实现。

3.      Fetcher

网页的直接爬取者。根据传入的Task,爬取对方的网页。



 

WebFetcher爬取的网页直接作为输入流传回。

HTTPClientFetcher:用HTTPClient4.0实现的WebFetcher,底层用的是java NIO.

4.      Worker

Worker负责Task的具体执行,从爬取到处理的整个流程. TaskMasterWorker提交到线程池中,有线程池调度并发执行。



 

Worker:整个爬取的执行流程

HTMLWorker:处理HTML网页的爬取

WorkerThreadPool:线程池,供Worker执行使用

WorkerProcessor:监听器。在worker执行前,执行后调用。可以做一些日志,错误处理等等。

5.      Parser

Parser将爬虫爬取的内容解析为规范的数据格式,提取有用的信息,便于系统进一步处理。



 

Parser:将传入的content解析成Data,或者利用传入的handler可以一边parse一边调用handler处理。

DataParser解析后的数据结构

ContentFetcher到的Content

RegexParser:对传入的字符串进行正则匹配,提取想要的字符串。

SaxParser:主要是通过回调方式实现

DomParser:将XML转成Document返回

HTMLParser:组合模式,可以综合使用RegexParserDomParser等完成任务。

ParseContext:传给Parser的上下文环境。可供扩展使用。

 

  • 大小: 27.8 KB
  • 大小: 36.7 KB
  • 大小: 21.3 KB
  • 大小: 26.9 KB
  • 大小: 28.7 KB
分享到:
评论

相关推荐

    Java爬虫框架设计-针对电商网站进行数据爬取、分析、存储、索引的分析与设计.pdf

    6模块.........................6 6.1Scheduler..................6 6.2TaskMaster.................7 6.3Fetcher....................9 6.4Worker.....................10 6.5Parser.....................10 6.6...

    基于java的一款webmagic开源的Java垂直爬虫框架

    webmagic是一个开源的Java垂直爬虫框架,目标是简化爬虫的开发流程,让开发者专注于逻辑功能的开发 webmagic的核心 webmagic的主要特色: 完全模块化的设计,强大的可扩展性。 核心简单但是涵盖爬虫的全部流程,灵活...

    java爬虫实战项目源码

    这个Java爬虫实战项目源码包含了爬虫框架的基本设计与实现,以及具体爬取网站的实现方法。代码中提供了详细的注释和解释,对于初学者也非常友好。通过这个源码,你可以深入了解Java爬虫的基础知识,学习如何使用Java...

    WebMagic(Java爬虫框架) v0.7.2

    webmagic采用完全模块化的设计,功能覆盖整个爬虫的生命周期(链接提取、页面下载、内容抽取、持久化),支持多线程抓取,分布式抓取,并支持自动重试、自定义UA/cookie等功能。

    一个简单易用的爬虫框架,内置代理管理模块,灵活设置多线程爬取.zip

    爬虫(Web Crawler)是一种自动化程序,用于从互联网上收集信息。其主要功能是访问网页、提取数据并存储,以便后续分析或展示。爬虫通常由搜索引擎、数据挖掘工具、监测系统等应用于网络数据抓取的场景。 爬虫的...

    基于JavaGUI+Web Magic爬虫框架实现的医案采集系统.zip

    网页爬取,即医生提供包含医案文本的URL,指定爬取规则,系统启动爬虫模块从该网站获取医案文本并导入文本编辑区;图片识别,即医生提供病人以往的病历图片,系统启动识别模块自动将图片中的医案文本识别并导入文本...

    Java网络爬虫(蜘蛛)源码.zip

    这段Java网络爬虫源码资源是一个功能完善且易于扩展的爬虫框架。它采用了模块化设计,使得用户可以轻松地根据自己的需求进行定制和扩展。源码中包含了网络请求模块、HTML解析模块、数据存储模块以及任务调度模块等多...

    JAVA上百实例源码以及开源项目

     Java二进制IO类与文件复制操作实例,好像是一本书的例子,源代码有的是独立运行的,与同目录下的其它代码文件互不联系,这些代码面向初级、中级Java程序员。 Java访问权限控制源代码 1个目标文件 摘要:Java源码,...

    JAVA上百实例源码以及开源项目源代码

     Java二进制IO类与文件复制操作实例,好像是一本书的例子,源代码有的是独立运行的,与同目录下的其它代码文件互不联系,这些代码面向初级、中级Java程序员。 Java访问权限控制源代码 1个目标文件 摘要:Java源码,...

    毕设项目-基于SpringBoot+mybatis搜索引擎优化的健康问答系统java源码+项目说明.7z

    ask-spider: 爬虫模块,独立的一个模块 ->ask-dao ask-model: 模型层模块,负责存放各种bean ask-dao: 数据持久层模块,负责数据库的CURD操作 ->ask-model ask-service: 业务层模块,负责项目中业务的处理 ->ask-dao...

    婚恋网站java源码-AwesomePythonWork-YouNeed-To-See:AwesomePythonWork-YouNeed-T

    婚恋网站java源码很棒的 Python 精选的 Python 框架、库、软件和资源列表。 灵感来自 . 管理面板 管理接口库。 - 您的服务器应得的管理面板。 - 替代的 Django 管理界面(仅供非商业用途免费)。 - Django 管理员的...

    Java爬虫技术框架之Heritrix框架详解

    Heritrix是一个由Java开发的开源Web爬虫系统,用来获取完整的、精确的站点内容的深度复制, 具有强大的可扩展性,运行开发者任意选择或扩展各个组件,实现特定的抓取逻辑。 一、Heritrix介绍 Heritrix采用了模块化的...

    webporter:基于 webmagic 的 Java 爬虫应用

    不定时进行调整和补充,需要关注更新的请 watch、star、forkwebporter 的主要特色:基于国产 Java 爬虫框架 webmagic,是众多 Python 爬虫中的一股清流完全模块化的设计,强大的可扩展性核心简单,但是涵盖爬虫应用...

    Java源码程序案例分享 100套

    题库及试卷管理模块的...JAVA SMART系统-系统框架设计与开发(...JAVA SMART系统-系统框架设计与开发(...JAVA+access综合测评系统毕业设计(源..java+mysql crm客户关系管理系统JAVA+SQL办公自动化系统(源代码+论......

    GuozhongCrawler的是一个无须配置、便于二次开发的爬虫开源框架.zip

    其设计灵感来源于多个爬虫国内外爬虫框架的总结。采用完全模块化的设计,功能覆盖整个爬虫的生命周期(链接提取、页面下载、内容抽取、持久化),支持多线… 爬虫(Web Crawler)是一种自动化程序,用于从互联网上...

    goniub是一个java爬虫工具库.zip

    跨平台开发工具如Xamarin、React Native和Flutter,让开发者使用一种语言或框架编写可以在多个操作系统上运行的应用程序。 文档编写与API管理: 文档生成工具可以自动生成代码注释文档,便于团队内外理解和使用...

    66套Java SpringBoot系统源码集合超值划算.zip

    基于SpringBoot,Shiro,Redis,Mybatis,SSO的多模块系统,包含了SSO单点登陆, 通用后台管理,NewBee-mall商城,每日一文等多个模块,支持Shiro与SSO模块的集成,易于上手,学习,二次开发waynboot-sso-master.

    毕设&课设&项目&实训-无须配置、便于二次开发的爬虫开源框架,它提供简单灵活的API.zip

    其设计灵感来源于多个爬虫国内外爬虫框架的总结。采用完全模块化的设计,功能覆盖整个爬虫的生命周期(链接提取、页面下载、内容抽取、持久化),支持多线… 【项目资源】: 包含前端、后端、移动开发、操作系统、人工...

    毕业设计:Java项目基于SSM的mysql-汽车销售分析与管理系统带爬虫(源码 + 数据库 + 说明文档)

    第3章 系统总体框架 7 3.1 系统模型结构 7 3.2 系统功能模块简介 7 第4章 系统分析与设计 8 4.1 数据库的分析与设计 8 4.1.1 数据库的概念结构设计 8 4.2 数据库的逻辑结构设计 8 4.3爬虫技术的代码展示 10 4.4汽车...

Global site tag (gtag.js) - Google Analytics