文本内容:
开源爬虫框架:架构分析Python Scrapy所谓网络爬虫,就是一个在网上到处或定向抓取数据的程序,当然,这种说法不够专业,更专业的描述就是,抓取恃定网站网页的数据不过由于一个网站的网页很多,而我们又不可能事先知道所有网页的地址,所以,如何保证我们抓取到了HTML URL网站的所有页面就是一个有待考究的问题了一般的方法是,定义一个入口页面,然后一般一个页面会有真他页面的HTML URL,于是从当前页面获取到这些加入到爬虫的抓取队列中,然后进入到新新页面后再递归的进行上述的操作,其实说来就跟深度URL遍历或广度遍历一样上面介绍的只是爬虫的一些概念而非搜索引擎,实际上搜索引擎的话其系统是相当复杂的,爬虫只是搜索引擎的一个子系统而已开源的虫框架是一个快速,高层次的屏幕抓取和抓取框架,用抓取站点并从页面中提取结构化的数据Python Sccpyweb web用途广泛,可以用于数据挖掘、监测和自动化测试吸引人的地方在于它是-个框架,任何人都可以根据需求方便Scrcipy Sccpy的修改它也提供了多种类型爬虫的基类,如、爬虫等,最新版本又提供了爬虫的支持Bos㊀Spider siWmcipw㊀b
2.0是一个用写的简单轻巧,并且非常方便,并且官网上说已经在实际生产中在使用了,不过现Sccpy PythonCcwlerFcmework,在还没有版本,可以直接使触们的仓库里抓取源码进行安装Release Mercurial使用这个异步网络库来处理网络通讯,架构清晰,并且包含了各种中间件接口,可以灵活的完成各种需求Scropy TwistedScropy整体架构如下图所示,其中包含了它的主要组件及系统的数据处理流程(绿色箭头所示)下面就来一个个解释每个组件的作用及数据的处理过程绿线是数据流向,首先从初始开始,会将其交给进行下载,下载之后会交给进行分析,URL SchedulerDownloader Spider分析出来的结果有两种:一种是需要进一步抓取的链接,例如之前分析的下一页”的链接,这些东西会被传回Spider Scheduler;另一种是需要保存的数据,它们则被送到那里,那是对数据进行后期处理(详细分析、过滤、存储等)的地方另ItemPipeline外,在数据流动的通道里还可以安装各种中间件,进行必要的处理
二、组件(弓|擎)k ScrapyEngineScrapy引擎是用来控制整个系统的数据处理流程,并进行事务处理的触发更多的详细内容可以看下面的数据处理流程Scrapy、(调度)2Scheduler调度程序从引擎接受请求并排序列入队列,并在引擎发出请求后退还给他们、Sccpy Sccpy3()Downloader Ttjt^§下载器的主要职责是抓取网页并将网页内容退还给蜘蛛()Spiders、(蜘蛛)蜘蛛是有用户自己定义用来解析网页并抓取制定返回的内容的类,每个蜘蛛都能处理一个4Spiders ScrapyURL域名或一组域名换句话说就是用来定义特定网站的抓取和解析规则蜘蛛的整个抓取流程(周期)是这样的.首先获取第一个的初始请求,当请求返回后调取一个回调函数第一个请求是通过调用()方法该1URL stQrt_requests方法默认从中的中生成请求,并执行解析来调用回调函数storturls Uri在回调函数中,你可以解析网页响应并返回项目对象和请求对象或两者的迭代这些请求也将包含一个回调,然后被2•Scropy下载,然后有指定的回调处理.在回调函数中,你解析网站的内容,同程使用的是选择器(但是你也可以使用或其他任何3Xpoth BeoutifuSoup,lxml你喜欢的程序),并生成解析的数据项.最后,从蜘蛛返回的项目通常会进驻到项目管道
4、(项目管道)5ItemPipeline项目管道的主要责任是负责处理有蜘蛛从网页中抽取的项目,倒主要任务是清晰、验证和存储数据当页面被蜘蛛解析后,将被发送到项目管道,并经过几个特定的次序处理数据每个项目管道的组件都是有一个简单的方法组成的类他们获取Python了项目并执行他们的方法,同时他们还需要确定的是是否需要在项目管道中继续执行下一步或是直接丢弃掉不处理项目管道通常执行的过程有-清洗数据1•HTML.验证解析到的数据(检查项目是否包含必要的字段)
2.检查是否是重复数据(如果重复就删除)
3.将解析到的数据存储到数据库中
4、(下载器中间件)6DownloQdernnicIcllewQr㊀s下载中间件是位于引擎和下载器之间的钩子框架,主要是处理引擎与下载器之间的请求及响应它提供了一Scropy Scropy个自定义的代码的方式来拓展的功能下载中间器是一个处理请求和响应的钩子框架他是轻量级的,对尽享Scrapy Scrapy全局控制的底层的系统、(蜘蛛中间件)7Spidermiddlewor㊀s蜘蛛中间件是介于引擎和蜘蛛之间的钩子框架,主要工作是处理蜘蛛的响应输入和请求输出它提供一个自定义代码Scrapy的方式来拓展的功能蛛中间件是一个挂接到的蜘蛛处理机制的框架,你可以插入自定义的代码来处理发送Scrapy Scrapy给蜘蛛的请求和返回蜘蛛获取的响应内容和项目、(调度中间件)8Schedulermiddlewor㊀s调度中间件是介于引擎和调度之间的中间件,主要工作是处从引擎发送到调度的请求和响应他提供了一个自Sccpy Scrapy定义的代码来拓展的功能Scrapy
三、数据处理流程的整个数据处理流程有引擎进行控制,其主要的运行方式为Scrapy Scropy引擎打开一个域名,时蜘蛛处理这个域名,并让蜘蛛获取第一个爬取的
1.URL.引擎从蜘蛛那获取第一个需要爬取的然后作为请旅调度中进行调度2URL,.引擎从调度那获取接下来进行爬取的页面
3.调度将下一个爬取的返回给引擎,引擎将他们通过下载中间件发送到下载器4URL.当网页被下载器下载完成以后,响应内容通过下载中间件被发送到引擎5,引擎收到下载器的晌应并将它通过蜘蛛中间件发送到蜘蛛进行处理
6.蜘蛛处理响应并返回爬取到的项目,然后给引擎发送新的请求
7.引擎将抓取到的项目项目管道,并向调度发送请求
8.系统重复第二部后面的操作,直到调度中没有请求,然后断开引擎与域之间的联系9。
个人认证
优秀文档
获得点赞 0