0 有用
6 下载

【大创项目】基于Scrapy的分布式网络爬虫系统

文件列表(压缩包大小 4.74M)

免费

概述

研究目标

具备可视化显示,以网页的形式有好的显示数据,并提供简单的搜索功能,能将数据简单分类,智能推荐 整合数据信息,并以json格式存储至Mongo,方面各个平台使用,通过脚本程序,迁移到Mysql为依赖关系较强的项目使用使网络爬虫高效灵活, 在主题网站中尽量全面的爬取信息,并且能够自动构造URL,递归调用自身,开启多线程快速的爬取,准确提取有效信息,存储到数据库对于网络延迟的处理,并且能够开启HTTPCHACHE,极大限度的提高爬取速度,伪造代理信息,表单等,让目标网站,认为你是安全的。

研究方法

Scrapy主要组件

• 引擎(Scrapy) 用来处理整个系统的数据流处理, 触发事务(框架核心) • 调度器(Scheduler) 用来接受引擎发过来的请求, 压入队列中, 并在引擎再次请求的时候返回. 可以想像成一个URL(抓取网页的网址或者说是链接)的优先队列, 由它来决定下一个要抓取的网址是什么, 同时去除重复的网址 • 下载器(Downloader) 用于下载网页内容, 并将网页内容返回给蜘蛛(Scrapy下载器是建立在twisted这个高效的异步模型上的) • 爬虫(Spiders) 用于从特定的网页中提取自己需要的信息, 即所谓的实体(Item)。用户也可以从中提取出链接,让Scrapy继续抓取下一个页面 • 项目管道(Pipeline) 负责处理爬虫从网页中抽取的实体,主要的功能是持久化实体、验证实体的有效性、清除不需要的信息。当页面被爬虫解析后,将被发送到项目管道,并经过几个特定的次序处理数据。 • 下载器中间件(Downloader Middlewares) 位于Scrapy引擎和下载器之间的框架,主要是处理Scrapy引擎与下载器之间的请求及响应。 • 爬虫中间件(Spider Middlewares) 介于Scrapy引擎和爬虫之间的框架,主要工作是处理蜘蛛的响应输入和请求输出。 • 调度中间件(Scheduler Middewares) 介于Scrapy引擎和调度之间的中间件,从Scrapy引擎发送到调度的请求和响应。

设计处理流程:

1、得到爬取种子(URL) 2、根据爬取种子下载资源(页面) 3、解析页面,提取更多的URL 4、对页面做持久化操作 5、根据提取的URL再进行下载操作 6、重复第2步到第5步

系统设计

控制器

1、 配置文件处理模块:从配置文件中读取配置项,提供配置项的提取接口 2、 URL维护模块:负责维护URL库,提供如下功能 a) 输入新的URL b) 输出一个未被抓取的URL c) 负责维护URL的抓取状态 3、 任务调度模块 a) 负责协调控制器的流程 b) 负责调用其他系统模块完成工作 c) 维护URL列表数据结构

页面抓取的处理流程

1、 得到一个新的URL 2、 URL进入抓取队列等待抓取 3、 从队列中得到一个URL,把其分配给一个下载器的实例 4、 得到下载器的处理状态(URL处理状态需要被改写,得到当前URL深度,得到当前资源类型假如下载成功) 5、 得到当前页面中存在的下一级URL列表

RL维护模块操作(对外接口)

1、添加新URL 2、使URL进入抓取队列 3、从抓取队列中移除一个URL 4、修改URL库中某一个URL的值 5、添加新URL的列表 日志工具 日志输出等级设计(5个等级) 0调试[debug]:仅仅用于调试 1普通信息[info]:可以让使用者了解的一些信息 2警告信息[warn]:意味着程序中出现了错误,但是并不严重 4错误信息[error]:意味着程序中发生了严重错误,根据实际情况可选择使程序继续运行或使程序终止 5 程序崩溃[crash]

插件框架设计

1、 动态载入.so文件 2、 维护.so文件中的接口函数 3、 设计入口函数指针原型 int(handle)(void); 设计初始化函数指针原型 int(init)

模块管理器设计

载入模块的操作 Int Load (char* path, charname); Module getModule(char* name); 载入模块操作的处理流程: 1通过路径找到模块文件(.so) 2调用dlopen打开动态库(.so) 3使用动态库 4关闭动态库文件 转载自:https://github.com/hanhuiATlocalhost/spider

理工酷提示:

如果遇到文件不能下载或其他产品问题,请添加管理员微信:ligongku001,并备注:产品反馈

评论(0)

0/250