网络爬虫项目概要.docx

上传人:b****9 文档编号:25166580 上传时间:2023-06-05 格式:DOCX 页数:10 大小:54.78KB
下载 相关 举报
网络爬虫项目概要.docx_第1页
第1页 / 共10页
网络爬虫项目概要.docx_第2页
第2页 / 共10页
网络爬虫项目概要.docx_第3页
第3页 / 共10页
网络爬虫项目概要.docx_第4页
第4页 / 共10页
网络爬虫项目概要.docx_第5页
第5页 / 共10页
点击查看更多>>
下载资源
资源描述

网络爬虫项目概要.docx

《网络爬虫项目概要.docx》由会员分享,可在线阅读,更多相关《网络爬虫项目概要.docx(10页珍藏版)》请在冰豆网上搜索。

网络爬虫项目概要.docx

网络爬虫项目概要

标准化管理处编码[BBX968T-XBB8968-NNJ668-MM9N]

 

网络爬虫项目概要

Linux实训项目网络爬虫系统概要

1、什么是爬虫

是一个软件机器人,是可控的,可以可以从互联网上抓取我们所需的资源。

爬虫是搜索引擎后台的第一个子系统,数据入口之一。

2、爬虫能做什么

搜索引擎的基础应用

抓取大数据的一种手段

网页下载器

网店秒杀

3、关于项目

时间安排:

4天

关于需求、设计、编码、测试、集成

需求:

设计:

分为业务设计和技术设计。

业务设计是业务层的方案。

对我们软件设计师来讲,业务就是我们的系统想要完成一个工作,要经过哪些步骤或流程。

技术设计:

关于框架和处理流程,注意要采用面向对象的思维方式。

编码:

使用基本的技术细节进行系统实现

测试:

对是对我们系统可靠性的一个监测

集成:

将每个程序员开发的模块或子系统合成为一个完成的系统

思维方式:

线性思维方式与发散思维方式。

软件开发要掌握的思想:

模块思维

渐进式开发

4、需求:

自动抓取网络资源的软件。

1、资源是什么网页、图片、音乐、视频等

2、自动化是什么样子一旦运行就不需要更多的干预。

生成需求说明文档。

内容:

对需求中不明确或不完善的说明进行解释。

功能点、附加要求、性能要求等

5、设计

业务设计:

如何思考并完成设计

注意:

从顶层开始思考并设计,避免过早的陷入细节。

系统最粗浅的数据流

设计处理流程:

1、得到爬取种子(URL)

2、根据爬取种子下载资源(页面)

3、解析页面,提取更多的URL

4、对页面做持久化操作

5、根据提取的URL再进行下载操作

6、重复第2步到第5步

系统设计:

系统结构图

注意:

设计阶段必不可少

设计可以使我们的思路更清晰,可以提高工作效率,可以提高代码质量。

详细设计:

注意:

对系统或模块设计要有输入和输出。

控制器模块

控制器由三个模块组成:

1、配置文件处理模块:

从配置文件中读取配置项,提供配置项的提取接口

2、URL维护模块:

负责维护URL库,提供如下功能

a)输入新的URL

b)输出一个未被抓取的URL

c)负责维护URL的抓取状态

3、任务调度模块

a)负责协调控制器的流程

b)负责调用其他系统模块完成工作

4、维护URL列表数据结构

6、控制器设计

配置文件解析模块

配置文件是以文件形式保存程序运行时必要的参数,减少输入时的繁琐过程。

文件类型是文本文件,内容一般以键值对形式出现。

概要设计:

配置文件内容:

key=value形式

注释规则:

注释字符串前以“#”标记。

配置项设置:

项目

字段

并发任务数

job_num

url种子

seed

抓取深度

deeps

输出日志的等级

log_level

模块存放路径(唯一)

Module_path

模块名称(模块文件名,可以多个)

Module_name

允许抓取的资源类型(多个,文件后缀)

file_type

模块详细设计:

操作:

1、读取配置文件

2、得到配置文件选项的值(键值)

3、初始化

ptivate:

1、o文件

2、维护.so文件中的接口函数

设计原则:

1、一个功能一个模块

2、可以自我维护

a)维护版本号

b)知道自己的名称

c)维护本模块内部的接口

d)可以对模块进行初始化

设计模块的描述结构:

字段

名称

主版本号

version

次版本号

subver

模块名称

name

入口函数指针

int(*handle)(void*);

初始化函数指针

int(*init)(Module*);

设计入口函数指针原型

int(*handle)(void*);

设计初始化函数指针原型

int(*init)(Module*);

模块管理器设计:

1载入模块的操作

IntLoad(char*path,char*name);

Module*getModule(char*name);

载入模块操作的处理流程:

1通过路径找到模块文件(.so)

2调用dlopen打开动态库(.so)

3使用动态库

4关闭动态库文件

7、下载器设计

下载器模块分为socket功能封装与Http功能模块

http协议对资源请求的操作get指令

HTTP头描述:

http头以文本形式体现在http协议包中

HTTP包的内容由HTTP头进行描述,描述的格式:

一条数据一行,每条描述以描述字段名称开头,

Socket功能框架设计:

1初始化socket

2向服务器发送请求

3接受服务器反馈的数据

4设置socket模式

把socket句柄注册到epoll处理事件中。

(在主流程中)

HTTP协议处理模块

1解析头

2组装头

提取HTTP数据内容(单独一个模块)

设计两个模块:

文本处理模块(html格式),二进制处理模块(image/jpg/png等各式),还可以继续添加其他文件处理模块(PDF、流媒体等)

注意:

需要了解的相关知识:

1http协议(可以通过查询RFC协议文档了解更多)RFC文档是用来解释网络协议的一种文档集合

GET指令

请求头的结构

反馈头的结构

2http协议传输文件的模式

http协议描述

8页面解析器设计

html文档,是一种标记性语言

对页面解析的目的:

得到页面中存在的下级URL

URL保存在标签的href属性中

可以通过正则表达式提取页面中的URL。

注意提取到的URL深度。

页面解析的处理流程:

1得到下载的页面

2得到页面对应的URL结构体(用于得到当前页面的深度)(注意判断是否已经达到最大深度)

3使用正则表达式得到页面中所有的URL列表

4处理URL中的相对路径

5一个细节:

把当前页面深度加一,生成并填充URL结构体6把得到的URL列表回写到URL管理器中(生成列表数据,以返回值形式回传给上层代码)

9持久化器设计

仍然以模块形式生成

分为网页保存模块和图片保存模块

注意,如果涉及到网页编码需要进行转码操作(本系统不对此进行操作)

处理流程

1得到页面的数据流或在内存缓冲区的数据

2得到当前页面的URL描述结构体

3生成保存目录(目录已存在和未存在的处理情况)

4把文件按照指定模式写入磁盘系统

5向主处理流程发送一个反馈,表示当前页面处理的进度

系统的核心代码:

1、系统主处理框架

2、Epoll框架的调用

3、插件框架的完整实现

4、Soket功能封装

5、http协议头解析

6、html解析并提取URL列表

7、URL管理器实现

后续工作:

如何进行单元测试cunit。

把软件做成系统服务,需要shell脚本。

集成测试。

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 高等教育 > 农学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1