scrapy-框架结构和爬取对象

如图

scrapy-框架结构和爬取对象

一般创建好工程以后目录是这样的

scrapy-框架结构和爬取对象

和框架图能够对应起来的好像就只有middlerwares和pipelines


其实呢,的确有些东西你也是看不到的

而且,我要的是葫芦,蚜虫什么的农夫会管理,也不用我们操心

真想知道,要么从cpu开始学,要么先会用了后来慢慢加深


要说的话,框架全靠scrapy引擎,这个就是老大了

老大手下有四员大将:

1. 调度器:任务之间统筹和调度

2. 下载器:负责从网络上获取资源

3. 爬虫:解析资源,获取资源链接或者跟进任务链接,任务链接调度器自动排布任务

4. 管道:资源的处理

还有中间件:middlerwares

中间件就好比安插在大将身边的指令员(内奸),用来传达上级的命令

事情当然是你来做,但是具体怎么做,看中间件的传达


然后可以看出来,工程中的差异:没看见引擎,调度器和下载器,多了个items和settings

把scrapy当做管家,准备做一道菜呢,工作流程是这样的

1. spider摘菜:摘菜,传达还需要的菜

2. downloader跑腿:到指定的菜市场带回一大堆菜

3. scheduler管家婆:布置任务,保证任务有条不紊

4. pipelines厨师:处理原材料,就是摘好的菜了

5. middlewares内奸:传达管家的意思,必要的让组件按照上级意思处理细节

所以,我们现在操纵着大管家,管家婆照常工作,downloader太低级

所以我们操控好摘菜的和炒菜的,任然能够出菜

至于大管家的小内奸,摸清楚套路了我们也能操控全部的人


至于工程当中的items和settings?

settings就是管家的文书了,是使用说明也是太后手谕

一方面你可以从里面看出你能操控些什么,一方面你也只有通过settings发布命令才能得到执行

items的话,就有点鸡肋了

摘菜?摘什么菜

items就是这样了,满汉全席的话这就很有条理

如果是个煮南瓜的话,就是个南瓜还要怎么做,瞎鸡巴列清单

scrapy-框架结构和爬取对象

就是这样,说明的也没啥,其实就是个名字而已

类型都用Field就行


所以呢,抛开管家(引擎),抛开管家婆(调度器),抛开跑腿(下载器),抛开内奸(中间件)

就是这样了

0. 大家都按照settings的工作要求来做

1. spider根据items摘出需要的菜

2. pipelines来炒菜


框架嘛,都不是用来学的,而是用来用的

你不是用它来爬,而是告诉他怎么爬

资源就都会到你手里,想办法摘菜炒菜就好了

如果他实在太蠢,你就用内奸告诉它怎么才能爬下来(代理),至于真正爬的,还是它