网络爬虫框架开发笔记

栏目: 编程工具 · 发布时间: 6年前

内容简介:首先,我们得明白网络爬虫是个什么玩意,它主要就是模仿终端用户,对网页进行爬取和分析,根据使用者的意愿从爬取下载的网页中提取出相关链接、筛选出可用的内容(词条),并对这些词条作存储、分析、统计等操作。既然我们要做一个网络爬虫的框架,我们就得来了解网络爬虫框架的功用,请看下面流程:根据上面的爬取流程分析,我们得出了以下几个核心关键词:

网络爬虫框架开发笔记

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、详细设计


以上所述就是小编给大家介绍的《网络爬虫框架开发笔记》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

Concepts, Techniques, and Models of Computer Programming

Concepts, Techniques, and Models of Computer Programming

Peter Van Roy、Seif Haridi / The MIT Press / 2004-2-20 / USD 78.00

This innovative text presents computer programming as a unified discipline in a way that is both practical and scientifically sound. The book focuses on techniques of lasting value and explains them p......一起来看看 《Concepts, Techniques, and Models of Computer Programming》 这本书的介绍吧!

图片转BASE64编码
图片转BASE64编码

在线图片转Base64编码工具

SHA 加密
SHA 加密

SHA 加密工具

RGB CMYK 转换工具
RGB CMYK 转换工具

RGB CMYK 互转工具