00:00
OK,同学们,那么接下来啊,我们就用CL spider来跟大家写一个实际的案例,那可能刚才有同学说,老师啊,你这个链接提取器,这个好像听着有点晕,但不晕,同学们你看哈,一会儿我们写上实际压力,你就发现,诶,它非常简单,你根本就不用去思考任何的东西,好,同学们。那么一会儿呢,我们先创建一个啥呀,先创建一个小项目,对吧?在哪创建呢?是不是找一个目录啊,对吧?CD,然后呢,我们把这个目录拖拽过来,拖拽过来OK,然后呢,迷回车就到这个目录下了,到这个目录下我们是不是要创建一个项目啊同学们,你看创建项目这句话是不是没有任何的改变呢?对吧,各位,所以说接下来我们在这就可以写上叫什么。叫做start project,起个名叫script_read book,然后下线101啊好同学们OK了,这个项目啊,我创建成功了,那接下来我是不是要创建爬虫文件了,各位对吧,那我这个爬虫文件我应该怎么去创建呢?是不是跟跟之前一样不一样啊,我们看来跟之前不一样,为什么?因为它多了一个杠T加C。
01:26
啊杠T加,但其其他都一样哈,来,走,我们进来。说CD到哪啊,对吧,我们也知道啊,叫scrap什么下线read book,然后接下来scrap read book下spiders,哎,进来,你在这里边来创建一个爬虫文件,而我们这个爬虫文件的创件和其他不一样,一会我写注释的啊,Scrapy还是j spider加啥呢?杠T,哎,这是我们第一个啊,然后加CRA啊,CRAWL不要写错啊,然后加啥,假如说起个read,那么接下来这都一样啊,盘虫文件的名字加上什么,是不是加读书网的这个什么。
02:10
地址啊,但在这块同学们要注意啊,我还是先拿它那一会儿你你猜我要不要改呀,必须的嘛,因为其他页你怎么可能只爬一页啊,对吧,好,同学们走。啊,我们创建完这个文件了,我们来看一下这个文件长成什么样哈,跟之前一样不一样,来read book,但是我们先不着急啊,我们先不着急去干啥呀,去这个看里边的文件,我先在这儿啊,来创建一个文件来描述它,描述刚才我们做的一些事情。首先第一步啊,同学们,我们是不是创建了一个项目,咋创建的呢?还还是一样啊SC。什么start project加上一个项目的名字对吧?诶项目的名这没有任没有任何的变化,那第二步呢,我们要做啥呀?叫跳转到这个spiders路径下吧,来写上跳转到spiders文件夹的目录下。
03:19
目录下第三步这咋做的呀,刚才是不是CD,然后项目名字。然后再加上啥呀,项目名字对吧,各位哎,项名字加上啥,加上spiders,那加spiders OK,那第三步我们做啥了呀,第三步我们是不是创建爬虫文件呢?创建爬虫文件我们怎么创件呢?是SCY什么j spider,然后加啥杠tve然后加啥呀。爬虫什么文件的名字在啥呀?爬取的域名吧,对吧,各位,哎,这是我们刚才的三步啊,大家记住了,那么紧接着啊,同学们,我们要观察一下这个read,它里边都有啥,好像跟之前不一样了。
04:16
你首先大家注意啊,他继承的东西好像不一样了,还有一个你这个你怎么你都得改吧。对吧,你怎么都得改,那改完之后呢,同学们,你看在这儿,我把它回个车。哎,把他回个吃。好嘞,下边这堆东西呢,我们先不看啊,先不看看这这个是allow是不是这个正则来着,那我们刚才写没写过正额呀,写过吧,各位,那我们再写一遍,刚才咋做来着。来在这儿右键随便找个找本书,右键在下边儿来找个地址,检查检查是不是book这个呀,对吧,各位,所以说在这儿我们可以给他改改,第一个看这里改啊。
05:09
第一个是啥叫做盖,它咋写咱咋写book对吧,盖1188对吧,然后加个下划线,下划线后边有讲究了啊,下划线后边有讲究了咋的,你是不是要加反斜杠D呀,反斜杠D代表数字加号呢,代表啥?代表很多个对吧,可以一到多个,紧接着后边是不是加点HTML啊啊点HTML,但是这个点有的时候我们不生效,我们需要加一个转E让它生效,能明白不?各位哎,这个千万要注意啊好,那这个正则写完了,写完之后你看干啥了呢。它会提取啥,你什么都不用改吧,它会提取当前起始UR的链接,那么我们接下来要注意了,这个允许访问的地址啊,是不是只允许第一页啊,我要允许访问所有的东西,那你在这儿是不是就不一样了,各位同学对吧?所以说你要给他改为域名,千万要注意啊,改为改为域名,这个是很多同学在最开始学习爬虫的时候咋的。
06:14
哎,容易遇到的一个问题哈,允许访的域名一定要特殊的注意到啊,车主注意到。然后这个有一个什么follow等于true,同学们我先不给他写true,我先给它写成false,我稍后再告诉大家为什么啊,稍后再告诉大家为什么好同学们,那么接下来啊,我们看这里边执行不执行哈,执行不执行我看怎么怎么去做是吧,呃,这个先这样吧,来print一下加号。嗯,好,那我们这东西咋运行呢?同学们还和之前一样吗?我们得试试对吧,来scrap c加啥呀,我们叫read都。嗯,哎,有问题了啊,打错了,打错单词了,CRA,嗯,不要打错这个单词啊都。
07:05
好,同学们看加号来没来呀,来了是不是没问题,各位,诶,所以说大家注意啊,这个确实执行了,执行之后,接下来同学们你看它源码中给的多low啊,源码中还用啥呢。用这种方式对吧,而我们早已经用啥了,是不是用数据结构了,对吧,这种方式不可取啊,我们不要它,嗯,把它先干掉啊,把它干掉,把它干掉之后我们要写啥呢?我们现在是不是要给他树结构,我们要爬啥。咱们先定好,我们要爬取的是一个是图片,一个是他的名字,其他的咱们先不爬可以吧,啊,你要想爬的话,你再爬一下作者啊,这都可以好,那么术语结构我们定好。在第一个叫name作者,呃这个呃,图片的名字是吧?书的名字等于sc.field那么还有啥呢?我们图片等于sc.field对吧?哎,路径哎,这两个都得有,那么这两个既然都得有,我们接下来在这是不是就得爬它呀?还是response,我们就得写什么了,同学们是不是就得写路径了呀?
08:14
哎,路径那就找呗,我认为这个应该能挺好找,为啥呢?咱看一下吧,看一下标签结构。右键检查。那这个检查你看是不是以妹纸src就是地址,然后这个out,这个outt就是它名,咱们同学如果你的眼睛稍微的灵活一点,你就可以看到后边有啥了,是不是叫data original啊,诶又出现了一个date,所以说它应该做了啥呀,懒加载吧,对吧,各位诶,所以说在这块儿千万千万要注意啊。那它是谁的呢?我们上Li上边找ULUL这上边是不是有个叫叫啥,是不是叫不合利斯的同学们,哎,所以说在这呢,还是个类选器,我们就知道咋写了,咋写呀,这个应该叫image list吧,为啥起名叫呢?因为你out也好,Src也好,或者data也好,是不是都属于image的,所以在这呢,我写个image等于response,点叉pass,那里边写啥呢?杠杠,Div。
09:17
艾class等于啥,等于不克粒对吧,各位是不是等于不可粒子class嘛他嘛,它下边的谁。它下边的image吧,可以吧,各位,哎,所以在这里边写上它下边的一个image,当然呢,我们也可以干什么呢,我们也可以使用这个啥,这个叉pass插件给它检测一下子。来写上杠杆,Div at class等于啥?等于这个不,List下边的image看到了是不是40个image,啥,At alt是不是at?Src没问题吧,各位都行啊,好嘞,那么他能找到的话进来就简单了。for循环以妹纸因。
10:11
Image list,那接下来我们先找啥呀?先找这个name吧,等于image,点叉pass,然后在里边写啥呢?点杠代表当前路径对吧?然后接下来我们是不是找的这里边的谁?是不是date original并写错啊,你写src肯定是有问题的,当出现data original了,那你肯定就不能写啥了,不能写src了啊好,提取里边的内容,因为叉pass返回的是一个列表,好,Src等于image,点叉pass在里边写啥?同学们是不是艾特?诶,Sorry,上面是不是少写了个艾呀?哎,属性嘛,对不对?然后写上alt,不点ex drink小些first对吧?各位,这数据我们就拿到了吗?来打印一下吧。
11:01
啊,先别打印,为啥这item还没有呢?我们是不是可以创建一本书啊?不是一本书吗?等于谁同学们。你是不是要等于一下这个对象啊,对吧,那我们现在就拿来这个,我们都写过好多次了,对吧,那写上啥呀,写上name等于name s RC等于src对吧,各位啊,最后返回谁呀,返回一个这个。不能用它了吧,我们之前使用的是谁,是不是业务的拿过来一个,我们返回一个呀,嗯,那这个报错原因,我们是不是得找个包。导包的时候注意告诉大家咋导啊,我之前跟大家说了,别瞎导,这个导包很讲究,From叫SCP,什么CRASC,我们叫做read book.it对吧,然后import加上谁呀,加上它就可以了,虽然它报错,但是我们好用啊,我们好用好同学们,那这个东西我们有没有爬取到呢?
12:06
来我们来先运行一下子啊,先运行一下走。嗯,观察好像爬渠道了吧,很快速的就爬渠道了,对不对,但是我们不确定这数据对不对,为啥呢?因为我们现在也看不到啊,所以说我先干什么,同学们,我先给它保存到我们的接森文件中,同学们能理解吧,你看刚才这逻辑不都这样吗?加一块才几行代码啊。20多行代码吧,还不算空格,是不是比较简单啊?那我既然想把它放在管道里边,我就应该干啥呀?把管道打开吧,打开打开之后呢,接下来我们在管道中是不是又又是一堆啊,先底叫啥来着,是不是先开启它,开启它之后干啥呀?写呗,写上DeFine叫open_spider然后加上啥呀spider好,Self点什么FP等于open,然后写上book。
13:08
点杰森对吧,各位,然后呢,我们以W的模式来写它,然后encoding给他一个UTF杠八。对不对,那最后我们再来呀,关闭它DeFine close_spider然后加上一个spider,好同学们,self.fp.close是关闭吧,你文件用完之后必然关吗?我们咱们讲文件的时候不也一样吗?打开写写完之后咋的关闭嘛,然后中间干啥,我是不是写它self.lp.right来写成啥呀?因为它里边只能写字符串,所以说我是不是要强制类型转换一下同学们。没问题吧,好,OK啊。那我们接下来要干啥呀,要运行它,看能不能给我们写进去呢。
14:01
好,结束了,呃,结束了,我们来看一下这数据对不对啊,数据量对不对,Book。走诶点错了啊,来给它关掉一下,然后ctrl alt加L。来了,这里边一共有多少条呢?我们看一眼哈,这是几个,相当于三个是一个数据是吧。我们是1440。写个计算器。找个计算器。好一千四百四啊,一共有40页是吧,一页有40条,40呢,乘多少呢?乘这个13等于520。那五百二再乘以三。一千五百六对吧,好像我们数据算的对不对的,算一下看一下啊,这是两个还是三个1440。然后现在再看一下,应该是啊两个。
15:02
两个,那就是。40酸盐40乘以。这多少页,我们看一下是不是13页啊。来看一下多少多少页啊,这是代码爬出来了,算数难住了对吧,一共有13页啊,13页,13页的话,一页有40本书,40本书一个占多少行啊,占三行,我们来算一下啊。那就相当于计算器啊,这岁数大了,算不明白了是吧,13乘以40乘以三,那好像不对呀,数据呀,那乘以俩呢。来13乘以40。乘以二一千零四十,那也不对呀。所以说呀,同学们这呢,就是我们在这个CRA spider遇到的一个大坑,那这个大坑是啥呢?为什么它出现了我们现在的这样一个数字呢?叫啥来着,叫一千四百四啊,咱们反向除一下啊,一千四百四对吧?诶sorry哈,1440。
16:20
怎么老打一千四啊,它除以谁呢?除以40,再除以三,你发现它是啥?它是12页,它少了一页,那为啥呢?难道他只能干啥呀?只能给我们12页的数据,我们不13页吗。大家注意啊,在这块它的大坑在哪儿呢?在这儿了,大家注意啊,它提取的是这十几页啊,12页这是没有任何问题的,但第一页为啥没有这个数据呢?大家注意啊,是因为你这个链接提取你的首页。大家注意啊,这个问题是很多人他不注意的,就是你的首页他并不在这个规则里吧。
17:08
对吧,各位你的手它缺失啥,它缺失第一页的数据,为什么?因为你在这没有个下划线,没有个值,所以它不执行。同学们千万要注意这个大坑,我们写的没有错,但是就是因为啥你这个地址,你这个链接地址,它不符合这个提取规则,所以才没有执行,明白了吗?各位,那我们现在再来看一下,说这是第二页,那我回头他是第一页的时候,我能不能再回到第一页呢?走可不可以乌蒙滂沱?明白吗?大家所以说注意啊,很多我们在最开始做爬虫的时候都会遇到这个问题,就是在如果你使用c spider了,你就一定会遇到这个问题,所以你在这儿干啥呀?你把它改为下划线一,它是首页,那么这个坑我们就规避了啊,千万千万注意啊,这里边的大坑就在这儿了,如果以后你做企业级研发使用了spider,这是我们遇到的唯一的一个大坑,其他的没有啊,好,同学们,那我再运行一次我们的代码走,你看是不是1560行。
18:28
我们来看这儿来ctrl al加L啊,并不是我们算错了啊,是因为啥,大家你要注意,刚才这个坑走1560行没有任何问题吧,对吧,各位,然后第一个是什么乌蒙滂沱啊,刚才是没有这个数据的啊好同学们,这以上呢,就是我们啥呀,我们这个spider的一个基本使用,下节课我们就干啥把它存储到数据库中,接下来我把视频暂停一下。
我来说两句