一、Scrapy框架Scrapy是一个用纯Python编写的用于爬取网站数据,提取结构化数据的应用框架。它具有广泛的用途。借助框架的强大功能,用户只需要定制开发几个模块,就可以轻松实现一个抓取网页内容和各种图片的爬虫,非常方便。Scrapy使用Twisted['tw?st?d](它的主要对手是Tornado)异步网络框架来处理网络通信,可以加快我们的下载速度,不需要自己去实现异步框架,并且包含各种中间件接口可以灵活的完成各种需求.Scrapy架构图(绿线为数据流向):ScrapyEngine(引擎):负责Spider、ItemPipeline、Downloader、Scheduler之间的通信、信号、数据传输等。Scheduler(调度器):负责接受引擎发送过来的Request,按照一定的方式排序,进入队列,在引擎需要的时候返回给引擎。Downloader:负责下载ScrapyEngine(引擎)发送的所有Request,并将获得的Response返回给ScrapyEngine(引擎),由引擎交给Spider处理。Spider(爬虫):负责处理所有的Response,从中分析提取数据,获取Item字段需要的数据,将需要跟进的url提交给engine,再次进入Scheduler。ItemPipeline(管道):负责处理在Spider中获取的item,并进行后处理(详细分析、过滤、存储等)。DownloaderMiddlewares(下载中间件):你可以认为是一个可以自定义扩展下载功能的组件。SpiderMiddlewares(蜘蛛中间件):可以理解为一个功能组件,可以自定义扩展和运行引擎以及引擎和Spider之间的中间通信(比如进入Spider的Response;以及从Spider出去的Requests)二、Scrapy的运行流程代码写完后,程序开始运行...Engine:Hi!Spider,你在处理哪个网站?蜘蛛:老板要我处理xxxx.com。引擎:给我第一个需要处理的URL。Spider:给你,第一个URL是xxxxxxx.com。发动机:嗨!调度员,我有一个请求,请你帮我把它排序到队列中。调度员:好的,正在处理中。等一下。发动机:嗨!调度员,把你处理过的请求发给我。调度程序:给你,这是我处理过的请求引擎:嗨!下载器,请帮我按照老大的设置下载这个请求下载中间件RequestDownloader:OK!给你,这是下载的东西。(如果失败:抱歉,本次请求下载失败,然后引擎告诉调度器本次请求下载失败,请记录下来,稍后我们会下载)引擎:嗨!Spider,这是下载的东西,已经按照最老的下载中间件处理了,你自己处理吧(注意!响应默认交给defparse()函数)Spider:(数据处理完后,为需要跟进的网址),您好!引擎,我这里有两个结果,这是我需要跟进的URL,这是我拿到的Item数据。发动机:嗨!pipeline我这边有个东西,请帮我处理一下!调度程序!这是您可以帮助我的跟进URL。然后从第四步开始循环,直到获取到boss需要的所有信息。管道``调度器:好的,现在开始吧!注意!只有当调度器中没有请求时,整个程序才会停止,(即对于下载失败的URL,Scrapy也会重新下载。)制作一个Scrapy爬虫一共需要4个步骤:新建工程(scrapystartprojectxxx):新建爬虫工程定义目标(编写items.py):定义你要爬的目标创建爬虫?(spiders/xxspider.py):创建蜘蛛并开始爬取网页存储内容(pipelines.py):设计管道存储爬取的内容点击获取爬虫视频教程和爬虫学习资料。Scrapy框架官网:http://doc.scrapy.org/en/latestScrapy中文维护站点:http://scrapychs.readthedocs.io/zh_CN/latest/index.html
