一、 模块
1. Scheduler
Scheduler负责启动爬虫,停止爬虫,监控爬虫的状态。
Scheduler在调度爬虫时,借助于Quartz,设置爬虫在某个时刻启动。同一个名字的爬虫是stateful的。
Task:初始化任务。
Trigger: 触发器,描述何时触发爬虫。
开放Scheduler远程API,可以通过爬虫配置管理平台管理和监控爬虫。
2. Task Master
TaskMaster:管理Task的执行过程,提交Task给WorkerThreadPool执行。
TaskController:独立线程,控制何时停止TaskMaster,DelayController和它自己
ExecutionState:描述TaskMaster当前状态
TaskQueue:存放未爬取的所有Task。可以是基于内存的,也可以是持久化的。不同的实现。
DelayTaskQueue:有些网站,如果连续访问,会禁止爬取,遇到这种情况,我们会暂时停止对该网页的爬取,我们需要一个DelayTaskQueue存放被延迟的Task。
DelayController:独立线程,不停的检测DelayTaskQueue中的Task是否过了限制期,过了限制期,移入到TaskQueue中等待爬取
Task:描述一个爬取任务。
HTMLTask:网页爬取任务
DBTask:DB爬取任务
DelayPolicy:定义Task的延迟策略,比如对同一个域名的网站,采取每隔5秒钟的爬取一次的方案。如果发现遭到限制,对同一个域名的网站,采取停歇10分钟的策略。
考虑到对将来对数据爬虫的支持,抽象了统一接口。数据库对Task,Fetcher,parser,Handler,Worker都有自己的实现。
3. Fetcher
网页的直接爬取者。根据传入的Task,爬取对方的网页。
WebFetcher爬取的网页直接作为输入流传回。
HTTPClientFetcher:用HTTPClient4.0实现的WebFetcher,底层用的是java NIO.
4. Worker
Worker负责Task的具体执行,从爬取到处理的整个流程. TaskMaster将Worker提交到线程池中,有线程池调度并发执行。
Worker:整个爬取的执行流程
HTMLWorker:处理HTML网页的爬取
WorkerThreadPool:线程池,供Worker执行使用
WorkerProcessor:监听器。在worker执行前,执行后调用。可以做一些日志,错误处理等等。
5. Parser
Parser将爬虫爬取的内容解析为规范的数据格式,提取有用的信息,便于系统进一步处理。
Parser:将传入的content解析成Data,或者利用传入的handler可以一边parse一边调用handler处理。
Data:Parser解析后的数据结构
Content:Fetcher到的Content
RegexParser:对传入的字符串进行正则匹配,提取想要的字符串。
SaxParser:主要是通过回调方式实现
DomParser:将XML转成Document返回
HTMLParser:组合模式,可以综合使用RegexParser,DomParser等完成任务。
ParseContext:传给Parser的上下文环境。可供扩展使用。
- 大小: 27.8 KB
- 大小: 36.7 KB
- 大小: 21.3 KB
- 大小: 26.9 KB
- 大小: 28.7 KB
分享到:
相关推荐
6模块.........................6 6.1Scheduler..................6 6.2TaskMaster.................7 6.3Fetcher....................9 6.4Worker.....................10 6.5Parser.....................10 6.6...
总结起来,XXL-Crawler 是一个强大的Java开发的分布式爬虫框架,它通过面向对象的设计思路,将爬虫任务的各个部分模块化,方便用户定制和扩展。同时,其分布式特性使其能处理大规模的爬取任务,提高数据抓取的效率和...
webmagic是一个开源的Java垂直爬虫框架,目标是简化爬虫的开发流程,让开发者专注于逻辑功能的开发。webmagic的核心非常简单,但是覆盖爬虫的整个流程,也是很好的学习爬虫开发的材料。 本项目的主要特色: 完全...
Java爬虫框架WebMagic是一个强大的、模块化设计的开源爬虫框架,专为简化网络爬虫的开发而设计。在本文中,我们将深入探讨WebMagic的核心概念、主要组件、使用方法以及如何通过示例项目spider_demo来实现一个简单的...
在这个Java爬虫实例中,我们将深入探讨其核心概念和技术,帮助你理解如何使用Java来编写一个完整的爬虫框架。 首先,Java爬虫的基础是HTTP协议,它允许我们向服务器发送请求并接收响应。在Java中,我们可以使用`...
Java爬虫是一种使用Java编程语言实现的网络爬虫,它能够自动地遍历互联网上的网页,抓取所需信息。在Java中实现爬虫,主要涉及网络编程、HTML解析和数据存储等多个领域。下面将详细介绍这些关键知识点。 1. **网络...
6. **爬虫框架**:有一些成熟的Java爬虫框架,如WebMagic、Colt和Crawler4j,它们提供了一套完整的爬虫解决方案,简化了开发过程。 7. **视频教程与源码**:题目中提到的"有视频有源码"可能是指提供了一套教学资源...
总的来说,WebMagic提供了一个强大且易于上手的Java爬虫框架,结合扎实的Java基础和爬虫知识,开发者可以高效地构建自己的网络爬虫项目,处理各种网页抓取需求。通过不断学习和实践,可以提升对WebMagic的理解和运用...
WebMagic是一个专为Java开发者设计的爬虫框架,版本号为v0.7.2。这个框架具有高度的模块化,使得开发人员可以方便地构建自己的网络数据抓取项目。在深入探讨WebMagic之前,先要理解爬虫的基本概念:爬虫是一种自动化...
webmagic是一个开源的Java垂直爬虫框架,目标是简化爬虫的开发流程,让开发者专注于逻辑功能的开发 webmagic的核心 webmagic的主要特色: 完全模块化的设计,强大的可扩展性。 核心简单但是涵盖爬虫的全部流程,灵活...
- Java的`WebMagic`是一个轻量级的爬虫框架,提供了页面抓取、DOM解析、分布式爬取等功能。 - Python有`Scrapy`框架,它包含完整的爬虫生命周期管理,如中间件、调度器、下载器等。 8. **异常处理**: - 在Java...
Java网络爬虫框架是用于自动化抓取互联网信息的程序,WebMagic是一个优秀的开源实现,它以其高度可扩展性而受到开发者们的青睐。本框架旨在简化爬虫开发过程,让开发者可以专注于数据抓取和处理的核心任务,而无需...
爬虫框架是指为了满足爬虫需求而设计的软件框架,它可以帮助爬虫开发者快速构建爬虫应用程序,提高爬虫的效率和可维护性。常见的 Python 爬虫框架有很多,下面我们将对它们进行详细的介绍。 1. Scrapy 框架 Scrapy...
9. Cola:Cola 是一个分布式爬虫框架,项目整体设计有点糟,模块间耦合度较高。 爬虫框架的选择取决于爬虫的需求,如果你需要爬取简单的页面内容,可以选择 Scrapy 或者 Crawley。如果你需要爬取新闻或者文章,可以...
本文将介绍一个简单的Java爬虫框架的设计和实现。 爬虫框架的组成部分 一个爬虫框架通常由以下几个部分组成: 1. 请求模块:负责向目标网站发送请求并获取响应的HTML页面。 2. 解析模块:负责解析获取的HTML页面...
SeimiCrawler是一个专为Java开发者设计的高效、敏捷且可分布式部署的网络爬虫框架。这个框架的主要目标是简化新手开发高质量、高性能爬虫系统的流程,同时提高爬虫项目的开发效率。在深入探讨SeimiCrawler之前,我们...
- **爬虫框架**:"zhizhu-project"可能使用了如Jsoup、WebMagic、Colly等Java爬虫框架,它们提供了更高级别的API,简化了爬虫开发。 - **异常处理**:处理各种可能出现的网络问题,如超时、重定向、验证码等。 - ...
这个名为"一个可扩展的Java web爬虫框架"的项目,显然旨在提供一种高效且灵活的方式来构建自定义的网络爬虫。让我们深入探讨一下这个框架的核心概念、功能以及可能的应用场景。 首先,Java作为一种强类型、面向对象...