下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、分布式网络爬虫设计文档刘祎睿 陈蔚瀚 李嘉一、实验目标:本次实验目标为设计一个分布式网络爬虫实现一下功能:1. 从一个给定的网址中分析其所包含的URL并爬取对应的网页,直到爬取完全部不重复的网页为止。2. 支持分布式爬取,同时记录输出每一个网页的大小。3. 采用多线程结构设计,实现高性能的网络爬虫。二、整体架构设计:本系统整体架构如下图,由主线程、异步抓取线程、网页解析线程三类线程构成,其中,网页分析线程由网页分析线程池统一分配调度。线程间的通信由网页结果队列和URL人任务队列负责,两个消息队列由轻量级消息队列Nanomsg创建采用Pipeline模式。主线程主要负责异步抓取线程和网页解析线程
2、池的创建。异步抓取线程主要负责从URL任务队列中获取网页网址,然后完成网页的Socket抓取,并将得到的网页存入网页结果队列中。网页解析线程池主要负责分配网页解析线程从网页结果队列提取网页进行分析。网页解析线程主要负责从网页内容中提取出有效的URL并存入URL任务队列。三、架构实现要点:完成本爬虫系统主要需要实现两个核心线程,分别是异步抓取线程和网页解析线程。1. 异步抓取线程设计抓取线程主要靠Libevent库来实现,Libevent库是一个基于Reactor模型的一个网络库,支持异步的调用函数。只需在初始化的时候在相应时间上一个函数,程序就会在该事件发生时调用对应的函数库。为了实现通过Li
3、bevent完成网页的连接和抓取,需要注册两个事件receiveResponse_cb和eventcb,其中receiveResponse_cb负责读取,eventcb负责设置判断是否发生建立连接事件,超时事件读取结束事件等。线程的整体逻辑如下图,首先完成相关事件注册,然后让线程处于循环查询状态,判断相关事件是否发生,如果定时事件被触发,爬取线程就会从URL任务队列中读取URL,然后通过Socket建立网络连接,并将连接事件加入队列。如果连接建立时间被触发,则爬取线程会向服务器发送HTTP请求。当连接数据事件到达事件被触发,爬取线程会读取HTTP响应,并将网页内容放入网页结果队列。2. 网页解
4、析线程设计网页解析线程主要负责解析HTML语言,通过使用有限状态自动机提取HTML中出现的有效连接,并将URL链接存入URL任务队列中。其整体流程如下:(1) 从网页结果队列中读取抓取HTML(2) 识别匹配网页字符集(3) 提取网页中的有效URL(4) 将提取出的URL放入URL队列中从HTML中提取链接所使用的有效状态自动机如下图:HTML链接中的URL主要放在标签中的href属性中,我们采用的状态机的方式提取出标签中的URL。分析时也需要去除href=”#”、href=”javascript:void(0)”等这样的无效链接,对于href=”a.html#a1”这样的锚点链接,我们要将后
5、面的锚点去掉,只留下a.html。这样在去重的时候,能够保证不将a.html#a1和a.html#a2视为两个链接。同时我们需要把相对URL地址转化为绝对地址。并将URL中无效的部分剔除掉,如某些URL后会包含?XXXXXXX,这些对于URL地址都是无效的。在提取过程中我们还要完成URL的去重工作,避免反复抓取同一个URL地址。在本次实验中,使用的是实验一大规模字符串查找中的TRIE树来进行查重。在使用TRIE树的时候,需要注意进行线程的同步。由于上一个实验的代码是单线程的程序,所以TRIE树的插入、查找的操作也是单线程的。所以在使用时需要用pthread_mutex_t来进行线程间的同步与互
6、斥操作。3. 消息队列设计消息队列采用的是Nanomsg库,这是一个使用C语言编写的一个消息队列,可以轻松完成跨线程、跨进程、跨机器的通讯。Nanomsg的通讯模式有NN_PAIR、NN_REPREQ、NN_PIPELINE等通讯模型。本程序采用的通讯模型主要是NN_PIPLINE的通讯模型,它是一种单向的通信,其通信模型如下图:4. 线程池进程池线程主要采用的是threadpool.c和threadpool.h这两个文件。其中,create_threadpool函数新建了一个线程池,并将线程池进行初始化操作。在实际需要调用线程的时候,只需要使用dispatch函数,将要调用的函数指针、参数传递进去。线程池会自动给你调用执行并回收
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 消化内镜护理中的科研方法与论文写作
- 消化内镜护理中的并发症处理技巧
- 手机版护理课件检索系统
- 如果不遵守交通规则果然素材
- 企业瑜伽协议书范本
- 创业投资合作协议书
- 潍坊一中素质考试题及答案
- 2026年颅内静脉血栓后遗症诊疗试题及答案(神经内科版)
- 2026年写字楼广告投放效果评估合同协议
- 楚雄州禄丰市公安局招聘辅警考试试题及答案
- 13.1 在劳动中创造人生价值 课件(内嵌视频)2025-2026学年统编版道德与法治七年级上册
- 2026年青山湖区住房和城乡建设局下属事业单位招聘工作人员8人笔试备考题库及答案解析
- 2026年新版事故应急处置卡模板(新版27类事故分类依据YJT 32-2025要求编制)
- GB/T 214-2026煤中全硫的测定方法
- 2026广东中考历史押题必刷卷含答案
- 2026年公共营养师三级月技能真题(附答案)
- 水泥基渗透结晶防水涂料安全交底
- 2026年上海市徐汇区高三下学期二模化学试卷和答案
- 会诊转诊服务中心工作制度
- 银川市、石嘴山市、吴忠市三市2026年高三年级学科教学质量检测语文
- 2026届广东省汕头市金平区~中考数学全真模拟试卷含解析
评论
0/150
提交评论