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

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...

    面向对象的分布式爬虫框架xxl-crawler

    总结起来,XXL-Crawler 是一个强大的Java开发的分布式爬虫框架,它通过面向对象的设计思路,将爬虫任务的各个部分模块化,方便用户定制和扩展。同时,其分布式特性使其能处理大规模的爬取任务,提高数据抓取的效率和...

    爬虫项目-Java垂直爬虫框架

    webmagic是一个开源的Java垂直爬虫框架,目标是简化爬虫的开发流程,让开发者专注于逻辑功能的开发。webmagic的核心非常简单,但是覆盖爬虫的整个流程,也是很好的学习爬虫开发的材料。 本项目的主要特色: 完全...

    java爬虫框架之webMagic

    Java爬虫框架WebMagic是一个强大的、模块化设计的开源爬虫框架,专为简化网络爬虫的开发而设计。在本文中,我们将深入探讨WebMagic的核心概念、主要组件、使用方法以及如何通过示例项目spider_demo来实现一个简单的...

    Java爬虫实例完整源码

    在这个Java爬虫实例中,我们将深入探讨其核心概念和技术,帮助你理解如何使用Java来编写一个完整的爬虫框架。 首先,Java爬虫的基础是HTTP协议,它允许我们向服务器发送请求并接收响应。在Java中,我们可以使用`...

    WebCrawler Java爬虫

    Java爬虫是一种使用Java编程语言实现的网络爬虫,它能够自动地遍历互联网上的网页,抓取所需信息。在Java中实现爬虫,主要涉及网络编程、HTML解析和数据存储等多个领域。下面将详细介绍这些关键知识点。 1. **网络...

    Java爬虫。。。。。

    6. **爬虫框架**:有一些成熟的Java爬虫框架,如WebMagic、Colt和Crawler4j,它们提供了一套完整的爬虫解决方案,简化了开发过程。 7. **视频教程与源码**:题目中提到的"有视频有源码"可能是指提供了一套教学资源...

    WebMagic (Java爬虫框架).zip

    总的来说,WebMagic提供了一个强大且易于上手的Java爬虫框架,结合扎实的Java基础和爬虫知识,开发者可以高效地构建自己的网络爬虫项目,处理各种网页抓取需求。通过不断学习和实践,可以提升对WebMagic的理解和运用...

    WebMagic(Java爬虫框架) v0.7.2

    WebMagic是一个专为Java开发者设计的爬虫框架,版本号为v0.7.2。这个框架具有高度的模块化,使得开发人员可以方便地构建自己的网络数据抓取项目。在深入探讨WebMagic之前,先要理解爬虫的基本概念:爬虫是一种自动化...

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

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

    Java爬虫源码Java爬虫源码

    - Java的`WebMagic`是一个轻量级的爬虫框架,提供了页面抓取、DOM解析、分布式爬取等功能。 - Python有`Scrapy`框架,它包含完整的爬虫生命周期管理,如中间件、调度器、下载器等。 8. **异常处理**: - 在Java...

    一个可扩展的Java网络爬虫框架

    Java网络爬虫框架是用于自动化抓取互联网信息的程序,WebMagic是一个优秀的开源实现,它以其高度可扩展性而受到开发者们的青睐。本框架旨在简化爬虫开发过程,让开发者可以专注于数据抓取和处理的核心任务,而无需...

    爬虫框架是什么?常见的Python爬虫框架有哪些?.docx

    爬虫框架是指为了满足爬虫需求而设计的软件框架,它可以帮助爬虫开发者快速构建爬虫应用程序,提高爬虫的效率和可维护性。常见的 Python 爬虫框架有很多,下面我们将对它们进行详细的介绍。 1. Scrapy 框架 Scrapy...

    爬虫框架是什么?常见的Python爬虫框架有哪些?.pdf

    9. Cola:Cola 是一个分布式爬虫框架,项目整体设计有点糟,模块间耦合度较高。 爬虫框架的选择取决于爬虫的需求,如果你需要爬取简单的页面内容,可以选择 Scrapy 或者 Crawley。如果你需要爬取新闻或者文章,可以...

    分享一个简单的java爬虫框架

    本文将介绍一个简单的Java爬虫框架的设计和实现。 爬虫框架的组成部分 一个爬虫框架通常由以下几个部分组成: 1. 请求模块:负责向目标网站发送请求并获取响应的HTML页面。 2. 解析模块:负责解析获取的HTML页面...

    SeimiCrawler一个敏捷的独立部署的支持分布式的Java爬虫框架

    SeimiCrawler是一个专为Java开发者设计的高效、敏捷且可分布式部署的网络爬虫框架。这个框架的主要目标是简化新手开发高质量、高性能爬虫系统的流程,同时提高爬虫项目的开发效率。在深入探讨SeimiCrawler之前,我们...

    Java网络爬虫(蜘蛛)源码-zhizhu-project

    - **爬虫框架**:"zhizhu-project"可能使用了如Jsoup、WebMagic、Colly等Java爬虫框架,它们提供了更高级别的API,简化了爬虫开发。 - **异常处理**:处理各种可能出现的网络问题,如超时、重定向、验证码等。 - ...

    一个可扩展的Java web爬虫框架.zip

    这个名为"一个可扩展的Java web爬虫框架"的项目,显然旨在提供一种高效且灵活的方式来构建自定义的网络爬虫。让我们深入探讨一下这个框架的核心概念、功能以及可能的应用场景。 首先,Java作为一种强类型、面向对象...

Global site tag (gtag.js) - Google Analytics