00:00
OK,同学们,那接下来呀,我们要写一个大活了,啥大活儿呢,我们要讲一下当当网,哎,这个当当网啊,我先给大家打开一下啊,来打开一下,呃,要讲个啥呢?先把当当网打开,当当网我们在这里边啊,随便找点你喜欢的,假如说我们点青春文学啊。青春文学给他打开之后啊,它还有一些其他的分类啊,分类,假如说这个爱情啊,言情啊,穿越啊,校园啊等等等等,我们随便找点东西吧,假如说点那个爱情情感的哈。然后我看他这个页码够不够啊,我要干啥呢?我要把他这个数据全给他下下来看一共有多少页啊。来页数少了,我们不同意,哎,正好这应该是100页吧,那我们就干啥,同学们,我要把它100页的数据。啊,我要把它100页的数据啥的图片呢,它的名字啊,它的价格我全给他下下来明白吧各位,诶,我要做这样一件事情。
01:07
所以说这个活儿暂时看起来挺大的是吧,但实则我跟大家讲,就script的框架非常的简单吧,对吧,我咱们能用不到60毫升的代码全给他写完,但是啊,跟大家讲我们的逻辑会有点小难。啊,我们的逻辑会有点小难。好同学们,咱们话不多说,闲言少叙,直接开开干,那咋的呢?咱是不是得先创建个项目啊,对吧?把其余的全给它关掉啊,接下来我们要做的是啥?我给大家讲,我们一步一步来,第一个我们要讲一个I的,大家之前没看过这个词,它特别像瑞特,然后再讲个管道封装,再干啥,多条管道,我一边下载数据,我一边下载图片啊,书的页面我都给它下来了,对吧?一边下载数据,一边下载页面,一边下载前就随便我可以多条管道同时操作啊,还想干啥呢?还有多页下载,我按照这个顺序来给大家去讲解这个当当网的爬曲,大家一定要认真听啊。好同学们,那接下来我们的第一件事情就要创建一个项目。
02:22
啊,创建一个项目好。然后我们在这儿来给它点开,好在这写上一个CD。然后呢,把它拿过来是这吧,对吧,我们来创建一个项目,这个项目呢,你给他起啥都行啊,起啥都行,假如说我们在这写上SC,然后start project起个名吧,SC。然后下划线叫当当啊当当下划线,这是应该到095了吧,来给它起个名啊095好OK啊,那么紧接着我进来啊,CD到啊这个P,然后下线当当,然后然后当当到spiders。
03:15
好,进来了,进来之后我是不是要创建一个爬虫文件呢,同学们没问题吧,诶创建它,呃,这个咋创建呢?Sc spider。然后起个名叫当啊叫当后边加上我们的起始URL吧,那也就是他呗,啊叫青春这个是吧,就是他。咱们一点一点来做啊,在张紧走,你好嘞,同学们完事了,我这个已经创建成功了,创建成功之后,我们来看一下这个有没有,哎,在这儿了,有吧各位,哎,没有任何的问题,没有任何的问题,大家先别着急写代码啊,我先看一下这玩意你肯定得删掉啊,对吧,后边带HT毛杠要不要删,咱再次一下,再次证明一下我们是对的,你看有数据吗?没得对吧,各位,所以在这里边呢,如果你要把它杠删掉。
04:10
把这盖删掉,你看是不是就有数据了呀,所以说大家注意啊,又一次证明了我们的猜想。那我们也别着急啊,别着急,我们干啥呢?我们还是在这里边打印一句话,我看一下他做没做什么反扒,如果他做了我们再唠是吧,好,那这个东西我们怎么去运行呢?叫SC,然后加上啥当对吧,好走。你看哎呀,他连robot协议都没给我们验证吧,这网站是不是很好爬呀,对吧,各位好,有了。有完之后同学们我要做的这几件事儿,接下来我就要写了啊,大家我先在这儿加个pass啊,然后我先说一下我都要干啥。第一,咱们说不有一个东西叫管道吗?管道叫啥来着,叫pipe烂吧,对吧,它是用来干啥来着,Pipeline啊pipeline它是用来下载数据的,对吧,下载数据的,然后这个item呢。
05:18
用来定义数据结构的,对吧?哎,咱们看一下这个不有这样一个东西吗。这几个描述是吧,哎,哪去了,在在哪在这item定义数据结构的,然后拍烂用来下载数据的,对吧,这都我们说的,那这玩意儿我们之前一直也没用上啊,同学们,这个案例我们就要用上它了。哎,我们就要用上它了,咋用呢?先别着急,我们先定义一下啥呢?先定一下这个数据结构H,啥叫数据结构说的通俗一点啊,通俗的说。都说就是你要下载的数据都有什么,我们把它叫做数结构来。
06:08
那在这有个啥案例呢,你看定义这个属性啊,像这样一样。啊,像这个就name等于sc field哪是样,那我们都要爬啥呀,咱得先选选呢,对吧,那你要爬的东西,第一个你是不是要爬一下这个图片呢,哪去了这了。对吧,再爬一下它的名,再爬一下价格,这是我们想要的吧,所以同学们注意啊,第一个我们要爬取的是图片的路径嘛,我们得要那个啥保存它是不是SCP点所有的都是这么写的啊,第二个是啥name等于SCP.field一样的,第三个是啥price等于SCP.field那有同学有的老师这有啥用啊,别着急,一点点来啊,第一个写上注释啊,它叫图片,第二个叫名字,第三个叫做价格,哎,咱得给它标上对吧,省得有同学说老师我单词不好,嗯。
07:06
好,那么这个定义完了之后,接下来我们就要做啥了呢?先别着急数结构在这了,是吧,咱得先爬它,爬它的时候这个还算比较简单吧,还算比较简单,哪一块比较简单呢?你得你得去干啥呀,同学们啊,你得先去做定位吧,对吧,那你定位就定位到他呗,图片走,他好来走。往上滑啊,往上滑,往上划划划划一点好到这儿就行了,呃,这个图片是哪一个呀,定位一下就是它走在这儿的,这是一妹子的一个图片对吧?然后还有一个这个价,这个价格和这个钱能看这是那个东西啊,是他。然后还有一个啥呢,还有个价格。
08:00
价格好,同学们呢,我们看一下啊,看一下第一个是它的一个图片。对吧,第二个是谁呢?是他的一个名字,那这个名字title里边这个名字和谁呀,和这out应该是一样的吧。对吧,哎,就到这我们要out是不是更好一点呢?对吧,因为这个太长了,是不是这抬头这个太长了是吧,或者说这个顾漫这个什么什么之类的,就什么星座,我感觉我们是不是可以要这个out这个名就可以啊。对吧,因为这个也是书的名嘛,对吧,它这显示的嘛,到到啥到什么,呃,就是顾漫,你是我的荣耀,然后赠海报明信片两张,杨洋迪丽热巴主演,然后签名什么随机掉落,什么顾曼什么等等再度打造是吧?哎,我们这个东西都就要它吧。呃,他俩我知道要谁了啊,一个是一个是图片,一个是图片啊。
09:07
一个图片,一个书的名,还有个价格,价格在哪啊,价格在这儿是吧?看到了吗?各位价格他们几个都是哪个标签下的呢?看到P是不是都是这个Li标签下的呀。对吧?各位,那为啥我要找他呢?大家先别着急啊,我稍后再告诉各位同学,为什么我要找到Li,你看是不是所有的书都是Li的呀?Li下边的谁呀?Li下边的A是不是下边有个image image的src和谁呀?Out吧?对吧,这两个我都要了,那么还有一个是谁呢?还有一个就是它下边有一个什么PP标签哪去了,PP下边有个叫什么price,下边有个SPA,这SPA俩SPA要第几个span呢?第一个SPA吧,是不是要这个八呀?啊对吧,各位哎,我们要知道这几个。
10:08
好嘞,同学们,呃,我们稍微有点感觉之后啊,就可以写了,我先找到所有的Li,我稍后再告诉各位同学是为啥的啊好,在这儿呢,我们先写上一下子啊,先写上一下,第一个是找谁呢?找这SRCSRC的路径是啥,我们得先写好啊,先写好,然后再把它一总结就OK了。诶,打这ctrl shift加X。CTRLC加X啊,再点一下,再点一下好出来了哈,它我们要找的是这里边儿所有的这个啥啊,先找src吧,好吧,来杠杠杠杠谁呀。是谁呀?哪个ul下边的LL都是哪个ul,是不是这个COMPONENT59啊,所以这里边写上ul,哪个ul呢?Ul你看有好多30个的吧,我要哪个ul啊,艾啥ID等于大家注意啊,叫COMPONENT59,我们把它粘贴到这里边是不是只有一个,同学们没问题吧,它下边的Li Li下边的谁呀?
11:25
啊,同学们,是不是它下边的image的艾特src啊,是不是60个,各位哎,一页有60个,100页是不是6000个数据,6000本书啊,还能要啥呀,他的out吧,对吧?对,哎,60个书的名好同学们,那现在我们这个就全都找到了src,那下边再来叫al LT等于啥呢?等于LT没问题吧,各位,哎,你要知道它怎么去找啊,剩一个谁了,剩一个press了,那么price它是谁呢?
12:04
再来看一下price是不是U下边的Li,把它细点啊,拿过来,Li下边的PP标签有一个price price里边有好多个SPA吧,我是不是要第一个span?对不对,所以在这里边。U Li下边的Li Li下边的谁呀?P,但P可多了,我要哪个P呀?是不是class等于price这个P啊,所以说在这里边写上at class等于price,你看是不是60个这里边同学们注意,这个P里边我要死SPA,要第几个死SPA呢?啊,我们要第一个span,它下边的span第几个呢?要第一个SPA对吧,第一个span中的啥呀,是不是里边的内容啊,各位你看这是不是也60个数据啊,所以说在这我们这个地址也拿到了。
13:03
没毛病吧,各位啊,没毛病吧,所以现在这个数据我们都有了,有完之后我们要干啥呀,咱同学肯定会说,老师那就简单了,是不是用range ls,然后一个个取可以,确实没问题。啊,确实没问题,但是呢,我想教给大家更简单,我们在企业级应用来说,更加常用的一种方法啥呢?看看各位啊,他们几个现在是不是共享Li标签。就都是Li下边的子标签吧,对吧,没问题吧,各位,所以说现在我们看啊,我先给你写上,先写啥呢,所有的select的对象都可以再次调用叉pass。方法来,我这先给写上所有的select对象都可以再次的去调用插判方法咋用啊?来否啊,先别否了,写个Li list等于response,点叉pass。同学们啊,我在这找Li没有任何问题吧,找到了吧?问,哎,找到了,找到之后现在我干啥?For,循环Li in Li list我来固定啥呀,它的这个顺序了啊,来print。
14:21
啊,Li。我们看一眼啊,同学们来在这我运行一下它SC加啥当走。好,是不是每一个都有Li对象啊,对吧,但这对象里边东西有点多,所以说在后边显示几个点,他不给你展示了,那我们要干啥呀,同学们。我们是不是要Li里边还有点东西呢?所以说在这我可以这么写,Src,等于记住了所有的select对象都可以再次的去调用啥。调用差帕的方法,那比如说点盖在当前的基础之上,我们要的谁呀?它下边的以妹纸下边的艾特src。
15:09
明白各位,那这里边是啥呀?Out,也就是内呗,等于Li点叉pass,它下边的也是点杠杠一妹子下边的艾特src。呃,LT对吧,各位,还有一个就是啥呀,我们的price price在哪,Li点叉pass,那在这里边它写的是什么呀,叫点看这里当前路径,点当前路径就是啥Li杠杠是不是紧接着后边就他呀,对吧各位,哎,我拿到它。拿到之后同学们注意别着急,我先打印一下啊,这里边啊,每个是不是列表啊,那你要干什么。你是不是要不要提取一下子,使不使用strict first呀,这你得想想对不对,得跟上思路啊,同学们,当然你每个都提取,我用for,韵文用lets也可以,但是教给大家一种新的写法来运行它。
16:13
看拿到很多很多东西吧,但是同学们有一个事儿我先不给你看啊,有一个事儿,这个叉pass返回的是不是一个列表,而列表里边的数据我是不是要提取一下。对吧,喂,你不提取里边哪有数据呀。你不你不提取里边不都是这个啥select列表吗?而我们要的是select对象里边的date的属性值吧,对吧,各位,所以现在我们来运行一下走诶在这啊走。我们看啊,你看这个数据,呃,在这什么什么PNG是吧,啊勾PNG,然后那个不为人知的故事,然后钱,然后他,然后名,然后钱他名钱他名钱没问题吧,各位。
17:03
对不对啊,但是在这里边有细心的同学可能发现了,你发现啥了呀。啊,同学们,你发现啥,你发现不对劲啊,老师,这个图片咋长得一样呢?我告诉各位啊,这是一个反扒,而且我跟咱们同学之前说过的一个反扒。啥反法呀,你涉及到图片的时候,是不是我们讲站长素材的时候给他说过啥,是不是有个叫什么懒加载呀,同学们,要不你图片加载起来,你你都加点首页,你是不是卡呀,那懒加载是怎么去证明呢?那我们来把它关掉一下。嗯,好,把这个页面啊,我们来刷新一次。刷新一次是不是所有的Li呀,看一下Li下边的谁来着。A标签对吧,A标签有个妹,诶啊,我刚才获取的什么none。
18:05
这个偏NG是不是难偏NG呀,看是不是难NG呀,它获取的是不是src啊,同学们看这里,看这里是不是src,而这里边记住了,这是它第二种延迟加载的操作,它并没有变成SRC2。而是变成了谁,而是变成了叫date original。Data,你把鼠标往这一放走。啊,他现在没没过来啊,所以说没有显示,你如果你要往下滑看啊,往下滑滑滑当当你看这里啊看这里。别溜号,看这里看这里看这里看滑滑滑,再走走走走,你观察住看变没变。再看看。啊,我还没滑到底儿,走走走,大家你看它是不是变了,变完之后的结果是不是就它,各位看好它变完之后结果是不是就是它呀,看懂看好了各位,所以说同学们千万注意啊,如果有date original了,你的src就不要再写src了,因为他做了啥他做了。
19:26
懒加载,那同学们我们再来看一眼。走,你看此时他图片的地址是不是就都变了,每个都不一样,看我复制一个。复制一个,然后把它在这打开一下走,是不是各位拿到没拿到拿到了没问题吧,大家哎,但是这里边呢,我们看一下还有什么其他的问题没有啊,再把它数据点点开往上找找找找找,呃,好像没啥大问题了,这块啊,诶不对,同学们,我们看到了一个小问题,看到了谁在这儿是不是有一个难。
20:11
啊,注意啊,这是因为我之前爬过,所以说我知道这有错,但是请同学们细心一点,为啥它是难呢?来同学们第一张图片是难的,原因我们马上揭晓。啊,马上揭晓。把它拿到最上边再来刷新一次。好,刷新一次,我先别着急,我先看第一张啊,就这Li呗,Li Li的AA,下边一妹子你再刷新一下。好像发现点小问题啊,什么小问题,同学们第一个Li的A标签下边的一妹纸好像啥啊?同学们咋的了?是不是没有date original啊?
21:04
对不对,我看第二个有没有。第二个诶,第二个是不是有data original看到了不,也就是说第一张图片它这个路径跟之前是不是不一样啊,那这个咋整呢?我告诉各位啊,看懂了吗?第一张图片和其他的图片是不一样的,在这写个小注释啊,第一张图片和其他的图片的什么标签的属性是不一样的。啊,那再描述一下第一张图片的src是可以使用的,其他的图片的啊,这个地址是谁?是data original,没问题吧,各位,诶,这是我们刚才通过观察发现的。
22:04
那这里边儿我们咋办呢?那这里边儿我们怎么去做呢?对吧,那你刚才是难,那也就是说,如果你这src要没有获取着就是难了,你的src就等于谁src吧,否则呢。啊,同学们否,你得想好啊,你这个第一个它是不是咋的。你要获取到DATE2了,你获取到它了,那你就是他了,如果你获取不到呢?你这src的值你还能从DATE2去拿吗?能吗?是不是不能各位,所以说此时你的S2C的值是不是就拿src就完了呀?大家你理解我的意思吗?你正常来说,你都是从data original里边去拿的,但是一旦拿到了,那就是你了,你2341直到第60章你全都拿到了。
23:07
但是如果你要拿不到呢,你是不是就从src里边拿呀。是不是各位,哎,所以说在这我们来看一下,看可不可以走你。好,同学们,我们再看一下第一页的数据,它还是那么顾漫。来复制一下他,来在这儿来给他粘贴一下走,是不是他杨洋迪丽热巴主演电视剧原著啊,那么现在同学们我们干啥?我们来看一下第一页是不是他呀?来走,你没问题吧,各位,哎,这就是啥呀,这就是我们刚才想要的数据啊,想要的一个数据我们全都获取到了,听懂了,各位,哎,这就是啥呀,我们抓取了当当网他们的数据,还没到100页的时候啊,好,同学们,我先把视频暂停,暂停一下,下个案例我们再讲和item之间的关系,好,视频暂停一下。
我来说两句