linux综合项目网络爬虫概要_第1页
linux综合项目网络爬虫概要_第2页
linux综合项目网络爬虫概要_第3页
linux综合项目网络爬虫概要_第4页
linux综合项目网络爬虫概要_第5页
已阅读5页,还剩14页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1引擎的第一个子系统,数据之一。2网页器3时间安排:441、资源是什么?网页、、音乐、2、自动化是什么样子?一旦运行就不需要的干预5(系统黑盒1、得到爬取2、根据爬取资源(页面3、解析页面,提取的45、根据提取的URL再进行操625器1、配置文件处理模块:从配置文件中配置项,提供配置项的提取接2、URL模块:负责URL库,提供如下功负责URL的抓取状34、URL列表数据结6 url模块存放路径(唯一模块名称(模块文件名,可以多个允许抓取的资源类型(多个,文件后缀1、配置文2(键值3{public共有成员函数(外部接口)key的操作();1()//:1、按行23(略URL模块url格式:=>url(0-未抓取;1--1–取失败urlhttp12DNS3DNSIP4IP52006http客户端(一般来说是浏览器)712URL3、从队列中得到一个URL,把其分配给一个器的实4、得到器的处理状态(URL处理状态需要被改写,得到当前URL深度,得到当前资源类型假如成功)5URLURL(数据结构(算法URL URL模URL模块操作(对外接口12URL34URLURL5URLstruct{}class{//structstru_url}class{public外部接口private://内部接口list<Url>map<string,Url*>UrlMap;quque<Url*>Urlquque;}123412检测是否按照守护进程模式运行(控制选项从命令行参数中得到3a配置文件,提取配置文件中的参bc4a检测是否存在,把交给URL管理b分析,得到url的IP地址(DNS解析c根据URL得到第一个页d对页面进行处理(复杂流程,由其他模块实现细节eURLf启动一个处理任务(先检测是否达到最大任务数量,功能封装到一个独立函数中g任务处理数量,如果任务池中有空闲任务,那么重复e步h1aburlurlURLc2aurlbepollc调用页面处理过程(d释放处理过程中产生的临时资源(socket句柄,文件操作句柄,临时申请的内存等11selectepollEPOLL相关技术要点:EPOLLEPOLL默认模式(效率与默认模式(效率与POLL相似理(IO相关理(IO相关从数据(IO操作相关 (非IO相关PPCorTPC12方便代码++日志输出等级设计(5个等级0调试[debug]:1普通信息[info]2警告信息[warn]4错误信息[error]:意味着程序中发生了严重错误,根据实际情况可选择使程序继续运行或5程序[crash]:程序无法继续运行了123412、方31.so2、.so文件中的接口函12 版本 本模块内部的接设计函数指针原1IntLoad(char*path,char*name);Module*getModule(char*1通过路径找到模块文件2dlopen打开动态库37、器设socketHttphttpgetHTTPhttphttpSocket1234socket把socket句柄到epoll处理中(在主流程中HTTP12HTTP数据内容(单独一个模块设计两个模块:文本处理模块(html格式,二进制处理模块(image/jpg/png等各式,还可以继续添加其他文件处理模块(PDF、流等)1http协议(可以通过查询RFC协议文档了解)RFC文档是用来解释网络协议的一种文GET2httphttp8html文档,是一种标记性语言URL保存在<A>的href属性URL深度。得到的页URL结构体(用于得到当前页面的深度注意判断是否已经达到最大深URLURL管理器中(生成列表数据,以返回值形式回传给上层代码9分为网页保存模块和保存模URL生成保 已存在和未存在的处理情况系统的代码:12Epoll34Soket5http6htmlURL7URL后续工作:如何进行单元测试cunit。把软件做成系统服务,需要s 23应该先写一个独立的验证demo,否则一旦发现bug,对bug的定位和解决非常5、遇到自己难以解决的问题一定要向项目寻求帮助,并说明原因6123如果软件比较复杂,那么源码文件按照模块存放入下 1 口碑,被广泛使用的一般是成Release版成,稳定的,一般要采BetaRcbeta版高,一般也不建议采纳2LibeventDNS解析功能wgetCurlwgetCurlepoll1bugif(var=={}If(var=1{…}FILE*pf= {//}intfd=open(…)if(fd<0{//}RetRecv(sockhandle,){}不做容错代码的2、进进试前先要有测试用例。输入的设计要有合乎规则的数据和数据3、使用断言assertCUNIT之前要先有测试用例执试用例代1把源代码备份到其他设备上保使用源代码管理工具(代码配置管理工具常用的配置管理工具:CVS(开源、SVN(开源、VSS(微软、

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论