内容简介:首先,我们得明白网络爬虫是个什么玩意,它主要就是模仿终端用户,对网页进行爬取和分析,根据使用者的意愿从爬取下载的网页中提取出相关链接、筛选出可用的内容(词条),并对这些词条作存储、分析、统计等操作。既然我们要做一个网络爬虫的框架,我们就得来了解网络爬虫框架的功用,请看下面流程:根据上面的爬取流程分析,我们得出了以下几个核心关键词:
网络爬虫框架开发笔记
1、网络爬虫与框架
1.1. 网络爬虫
首先,我们得明白网络爬虫是个什么玩意,它主要就是模仿终端用户,对网页进行爬取和分析,根据使用者的意愿从爬取下载的网页中提取出相关链接、筛选出可用的内容(词条),并对这些词条作存储、分析、统计等操作。
1.2. 网络爬虫框架
既然我们要做一个网络爬虫的框架,我们就得来了解网络爬虫框架的功用,请看下面流程:
输入(首个网络地址请求)-》网页下载器-》分析器-》条目处理管道-》输出
根据上面的爬取流程分析,我们得出了以下几个核心关键词:
1.2.1. 网页下载器
下载与给定网络地址相对应的网页内容。因为,我们做的是框架,因此对于用户的输入请求,我们会尽可能的预留出的定制接口,让使用者可以根据自己的需求,参照接口自定义自己的“请求”组装方法。注意:用户有可能会偷懒的,所以我们也得创建一个默认的接口实现。
1.2.2 分析器
对下载的网页内容进行分析,并从中帅选出可用的网页内容(即数据条目dataitem)和需要访问的网页链接。同样,为了使得爬虫框架灵活可用,在被用于分析和筛选网页内容的规则和策略方面,我们也得提供灵活的定制接口,因为只有使用者才知道自己真正想要的是什么。请看如下定义:
type ParseResponse func(httpResp *http.Response, respDepth uint32)([]base.Data, []error)
1.2.3. 条目处理管道
接受作为输入的条目,并对其执行一系列的处理步骤。这里对数据的处理【存储、分析、统计等】才是用户的真正需求,因此我们也得给使用者预留出定制接口。请看如下定义:
type ProcessItem func(item base.Item)(result base.Item, err error)
注意:无论是分析器还是条目处理管道,我们都在使用者真正有需要的地方预留出了定制接口,也就是说我们在开发的服务是给第三方使用,而我们又不知道使用方的真正需求的时候,就可像这样给使用者预留出定制接口,这也是golang开发过程中常使用到的一种技术手段
整体流程图如下:
2、详细设计
2.1. 基本数据结构
我们在开发项目的过程中,首先就得明确,整个项目要用到什么类型数据,那些是公用的,那些是私有的。现在我们来定义爬虫框架的数据结构:
2.1.1. 请求Request
type Request struct { httpReq *http.Request //http请求的指针值 depth uint32 //请求的深度 }
2.1.2. 响应Request
type Request struct { httpReq *http.Request depth uint32 }
2.1.3. 条目Item
type Item map[string] interface{}
以上三种数据类型贯穿我们的整个项目,是构成整个爬虫框架的基石,为了能够用一个类型从整体上标识这三个基本的数据类型,便于管理,我们定义如下接口类型:
/** * 接口的命名规范 只有一个函数以er结尾,两个WriterReader,三个及以上用结构体民命方式 */ type Data interface { Validate() bool }
2.1.4. 错误Error
const ( DownloaderError ErrorType = "Downloader Eoor" AnalyzerError ErrorType = "Analyzer Error" ItemProcessorError ErrorType = "Item Processor Error" ) type ErrorType string type ErrorTypeer interface { Type() ErrorType Error() string } type CrawlerError struct { errType ErrorType errMsg string fullErrMsg string }
2.2. 接口定义
2.2.1. 网页下载器
2.2.2. 分析器
2.2.3. 条目处理管道
2.2.4. 调度器
2.2.5. 中间件接口概述
2.2.6. 通道管理器
2.2.7. 实体池
2.3. 中间件的实现
2.4. 处理模块的实现
2.5. 调度器的实现
2.6. 使用案例
4、详细设计
以上所述就是小编给大家介绍的《网络爬虫框架开发笔记》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!
猜你喜欢:- 超级易懂爬虫系列之爬虫框架scrapy
- python网络爬虫(14)使用Scrapy搭建爬虫框架
- 一个咸鱼的python爬虫之路(五):scrapy 爬虫框架
- 11、web爬虫讲解2—Scrapy框架爬虫—Scrapy使用
- Scrapy框架-----爬虫
- WebMagic 爬虫框架浅析
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
面向对象分析与设计
Grady Booch、Robert A. Maksimchuk、Michael W. Engel、Bobbi J. Young、Jim Conallen、Kelli A. Houston / 王海鹏、潘加宇 / 人民邮电出版社 / 2009-8 / 79.00元
《面向对象分析与设计(第3版)》是UML创始人Grady Booch的代表作之一,书中介绍的概念都基于牢固的理论基础。同时,《面向对象分析与设计(第3版)》又是一本注重实效的书,面向架构师和软件开发者等软件工程实践者的实际需要。《面向对象分析与设计(第3版)》通过大量例子说明了基本概念,解释了方法,并展示了在不同领域的成功应用。全书分为理论和应用两部分。理论部分深刻剖析了面向对象分析与设计(OOA......一起来看看 《面向对象分析与设计》 这本书的介绍吧!