20180808_Scrapy源码第二天——源码第二更

第二天开始写,嗯,,,心里还是有点发嘘,但今天争取把昨天没搞定的写完吧。程序再后台跑。

嗯。先看两张今天收集到的比较牛皮的图片:

传送门:(https://blog.csdn.net/weixin_37947156/article/details/74435304)

先不说上面两张图片,先说一下昨天没弄懂的那个问题,为什么每个组件里面只要写class,哪儿调用了这个class?有没有实例化?

先从程序入口开始main函数的execute方法:

再看scrapy.cmdline里面的execute方法,可以发现,execute方法主要就是导入一些setting,然后读取你当前的command,规定了一下用法:

其实想一想,excecute方法,也只能规定这些,剩余的肯定要在command里面进行了啊。所以现在来看command方法,要看具体命令,首先是init初始化,然后run一下crawl。再看cmdline里面,可以看到,里面利用crwalerprocess方法创建了一个crawler:

继续看crawler,里面就好玩了啊。

可以看到,这边初始化了两个东西,一个是spider,一个是engine。看到这儿,我们大体上可以理一遍。excute之后,先进cmdline。初始化之后,执行crawlerprocess创建一个crawler,通过crawler创建一个spider和一个engine。当然过程中传入了一些参数啊还有setting之类的东西。

ok,那我们先看spider:

整体结构可以看到,spider里面几个重要的东西,一个是name,一个是starturl:

这些东西再spider初始化的时候就已经读取。还有两个方法,一个是start_request,一个是parse。通过之前写的程序我们就知道。start_request方法是对starturl进行重写。虽然我的程序里面没有进行重写,但是有什么好处呢?嗯,,,,我暂时是这样理解的。如果你用这种方法生成start_urls:

那么你可能遇到的问题是!网页爬的贼乱,结果比较错综复杂。但是如果你重写start_request方法,会不会就是爬出来比较规整,先是法律,后是环保?。。。嗯,,,有待实验,先挖个坑(坑)。

ok,上面讲了初始化的spider,包括几个比较重要的属性以及方法。下面再来说说初始化的engine。

还是先上代码,engine包括的主要是两个class,一个是slot,一个是excution,我感觉,,,slot应该是进行初始化的一些操作,你看这个init方法,里面初始化了scheduler,初始化了start_request,剩下的重要的部分都在excution里面。

再看excution

这边新生成了对象有几个,downloader,scrapy,spider等,还启动了方法openspider,crawl,schedual以及nexturl。

好了,敲黑板,划重点。看到没有看到没有?看前一篇文章的那个架构,总共组成部分有几个?downloaer,scraper,scheduler,全在engine里面了,有没有很帅?所以说,engine才叫engine,毕竟人家干了这么多活。

ok,这样的话,就可以回到第一篇的那张图了。流程可以理清,engine通过start_request或者直接获取start_url,生成个request,然后给自己生出来的scheduler,同时scheduler给它一个下载的request,engine再把它给自己生出来的downloader,downloader处理后给个response回来给spyder,spyder处理之后看返回的是什么,如果是结果也就是Item,那就给ItemPipeline处理,如果是Request,就继续给engine。然后循环处理,知道scheduler里面没有新的请求或者url为止。

上面的循环过程可以看第一篇的parse和parse_detail的返回,两个的callback不同。一个返回的是Item,另一个就是Url或者说request。

ok,说到这儿,大体逻辑可以理清楚。再来说说本篇一开始给po出来的两张图。其实第一张说的是一个顺序问题,虽然图里面的顺序比较乱,但通过箭头可以看出来,跟之前的那张图其实本质上是差不多的。然后就是你大概知道的东西,比如,

scheduler里面就可以规定调度顺序,调度速度?存储结构?之类的东西。那之后一些数据结构类型的东西就可以用在这儿,优化爬虫的话,可以在这边进行存储和调度url速度的优化。

downloader里面可能是要处理的重点,包括并发怎么写,处理器怎么用,然后就是下载器中间件管理比较重要,包括dialing,proxy,cookie等等,都是应对网页反爬虫的机制。

scrapyer里面就是一些爬虫的核心东西,比如爬的深度之类的,http怎么解析之类的,这个东西还不是太理解,因为除了css,xpath等还有其他解析结构?也许以后网页会边呢?讲不好。

ok,今早花了好长时间写这个,真累死。

还是那句话,有什么不对的地方,欢迎大家狠狠批斗我,不能误导他人,谢谢。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 211,265评论 6 490
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,078评论 2 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 156,852评论 0 347
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,408评论 1 283
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,445评论 5 384
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,772评论 1 290
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,921评论 3 406
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,688评论 0 266
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,130评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,467评论 2 325
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,617评论 1 340
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,276评论 4 329
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,882评论 3 312
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,740评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,967评论 1 265
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,315评论 2 360
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,486评论 2 348

推荐阅读更多精彩内容