概述
爬虫:
可控的软件机器人,可用从互联网抓取所需资源。爬虫是搜索引擎后台第一个子系统,数据入口之一;
爬虫功能:
搜索引擎的基础应用,抓取大量数据,网页下载器,网店秒杀
关于项目
时间安排:
1·需求:
2·设计:
业务设计:业务层方案,即软件实现的系统想要完成一个工作需要经过哪些步骤或流程
技术设计:框架设计与处理流程规划,面向对象
3·编码:使用基本的技术细节进行系统实现
4·测试:对实现的系统的可靠性进行监测
5·集成:将每个程序员开发的模块或子系统合成为一个完整的系统
思维方式
线性思维方式与发散思维方式
软件开发思想
模块思维
渐进式开发
需求:
自动抓取网络资源的软件
1·网络资源定义:网页、图片、音乐、视频等
2·自动化定义:一旦运行不需要更多干预
生成需求说明文档
内容:对需求中不明确或不完善的说明进行解释
功能点、附加要求、性能要求
设计:
业务设计:
如何思考并完成设计? 从顶层开始思考并设计,避免过早陷入细节
设计处理流程:
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列表数据结构
控制器配置文件设计
配置文件解析模块
配置文件是以文件形势保存程序运行时必要的参数,减少输入时的繁琐过程
文件类型是文本文件,内容一般以键值对形式出现。
概要设计:
配置文件内容:
key=value 格式
注释规则:注释字符串前以“#”标记
配置项设置
项目 | 字段 |
---|---|
并发任务数 | job num |
URL种子 | seed |
抓取深度 | deeps |
输出日志的等级 | log level |
模块存防路径(唯一) | Module path |
模块名称(模块文件名,可多个) | Module name |
允许抓取的资源类型(多个,后缀) | file type |
模块详细设计
操作:
1·读取配置文件
2·得到配置文件选项的值(键值)
3·初始化
//类设计伪代码
class ConfigParser
{
public: //公有成员函数(外部接口)
ConfigParser();
load();
对应key的操作();
操作1;
操作2;
private: //私有成员变量
job num
seed
deeps
log level
Module path
Module name
file type
}
技术点
1、按行读取fgets
2、分割字符串
3、消除注释
4、消除空格
控制器URL维护模块设计
分析:
URL格式:http://192.168.0.1/test.html
www.baiudu.com=>IP
结构:域名或IP地址,文件路径,文件名
设计URL的数据结构
项目 | 字段名称 |
---|---|
完整URL | url |
协议类型 | Protocal |
域名 | Sitename |
资源路径 | Path |
文件名 | Filename |
当前url状态 (0-未抓取 1-抓取成功 -1-抓取失败) | State |
当前url深度 | Deep |
当前资源类型 | Filetpe |
http协议请求页面流程