00:00
好同学们,我们刚才呀,把这个数据都拿到了,对吧,但是拿到之后呢,我们要做的第一件事是干啥呀,是要把它保存起来吧,那么保存起来我们咋保存呢?交给谁保存呢?同学们注意,是不是可以交给拍烂保存,哎,我们一点点的串啊,一点点来在这里边呢,我们数据现在都有了,那这个数据我们是不是通过item定义了它的一个数据的结构啊。那这玩意儿定义完之后,它咋用呢?同学们你注意啊,认真听讲,在这里边,假如说我定一个对象,等于刚才我在你没有不小心的时候,我复制了一下这个class的名。复制完之后,注意同学们它得导一下,因为你现在要用它咋倒呢?同学们注意啊,咋倒这么去导from from谁的item item是谁的呀,啊是不是scray呀,这个啥呀,当当095对吧,然后它的ITEM4导入谁呀,导入一下我们刚才的这个值。
01:21
不要看它报错,但是没关系啊,没关系,你看下边还报吗?不报错了,注意啊,因为这个编译器的问题,你这么导它报编译错误了,但是不影响我们任何的操作啊,不影响我们任何的操作,那导进来之后这个有啥用啊。这有啥用啊,同学们注意啊,第一个src是不是定src等于src,第二个属性你定义的叫啥来着,叫内幕吧,所以说接下来我们知道name就等于name,第三个price等于press,明白吧,各位,这里边的词是不允许我们仨瞎造的,那么同学们你注意了,这个对象是不是变了一个拿一个对象,变了一个拿个对象,这个对象要咋整?
02:14
同学们,这个对象我们是不是要交给谁,交给pipeline去下载呀。对吧,各位那咋教呢?在这里边跟大家去说一个方法,一个东西叫啥呢?叫做illld,这个yield相当于什么?大家注意这看看这边有一句话啊啥呢?这个illld简单理解illld就是return一个返回值。我return后边,可是不是不是可以返回一堆列表,而I的这里边我们返回的是一个值,也就是说你在这儿获得一个对象,我把它交给管道一下,获得一个,交给管道一下,获得一个交给管道一下,获得一个交给管道一下是这个意思,所以在这里边我写个业务的,不啊,这里写上。
03:10
获取一个book,就将book干啥?交给谁呀?交给pipe lines啊,交给管道,那交给管道的时候,你接下来要干啥呀?你是不是要在管道中去保存数据呀?我夸你看我再说一遍啊,来爬取的数据,将数据啊放到对象里边了,然后将这个对象又怎么的交给管道了。啊,交易管道了,那再把管道打开一下,这里边我来写,但是这里边我要一句话先跟各位同学说明白,如果想使用管道的话,那么就必须在哪settings中来开启管道,来开启管道,那么settings中的管道怎么去开启呢?在这儿点它往下滑呀滑,滑呀滑,这里边你会看到一个关于pipelines的一个东西,就是它。
04:24
拍PE烂,那也就是说默认情况下,这个项目下的PI Les的SCP当当095PIPE烂SC当当领有拍PE烂,要给他注释解开,那么你就开了。但是在这里边有一个小问题,有的同学可能会说,老师,这路径我懂,300又是个啥呀?哎,大家注意啊,300这管道啊,首先咱说说管道可以有很多个。那么管道注意啊,是有优先级的,优先级的,优先级的范围是一到1000。
05:05
啊,一到1000,值越小优先级越高,大家能理解我意思吧,我将来我有800条管道。那你是不是直业小先执行啊,咱不有那个先来后到吗?不有快慢吗,对不对,哎,哪个重要,我们就把它的值改的小点,能听懂吧,喂,哎,那他有了,有了之后我要干啥呀,我是不是要在这里边将什么。将我们的数据给它干啥呀?给它下载一下呀,那这里边谁是我们的数据呢?大家注意啊,这个it it就是ill的后面的book对象,每你就这里边你传过来一个item,就是他传过来一个item接受一个,传过来一个item接受一个,明白各位好,那既然他有了,你就要干啥呀,同学们。
06:07
啊,你要干啥呀,你是不是就要将啥呀,将这个数据给他。保存到一个文件中吧。理解不?各位,那我就保存呗,With open写个名,你这个字典我们是不是可以用J森来保存呢?对吧?然后来一个啥,来个W,再来个啥including等于utf-8IS f p fp.right来写一个item,大家注意啊,在这有两个坑是需要我们注意的,有两个坑是需要我们注意的,第一个坑我们来看一下。那来走。他并不会报什么错是吧,哎,并不会报什么,但有错呀,什么错呀,什么这里边第一个啊,第一个错是咋的了,直接就报这一个错了,什么fail啊,什么什么之类,注意啊,它哪句话起了决定性的作用呢?这句话说right arguments must be string啥,它必须是一个注算,而不能是一个什么对象吧,明白各位在这里边写上第一个错误,第一个问题啊,写注释就是right。
07:28
放IG1啊一。Write方法必须要写一个字符串,而不能是其他的。对象啊,不允许,那咋办呢?强转呗,Str是不是就可以啊?来强转R,那么我们接下来可以确实能写进去了,但是还有一个问题,走。来看好,好像东西还不少是吧?没啥报错,没啥报错,你点开杰森你就发现了,诶为什么只有一条数据啊,叫什么它那么填对吧?它那么填我们来看一下它那么填是第几本书啊,往下滑滑滑滑滑滑滑,你发现它怎么是最后一本书啊,各位为啥呀。
08:24
我这里边60本书,为啥他只写了一本书啊,为什么呀,同学们啊。大家注意啊,这里边我的第二个坑就是就是W会每一个对象都打开一次文件,W模式啊,W模式就写的模式,每一个对象都会打开一次文件,然后覆盖之前的内容,然后关闭。对吧,覆盖之前内容欧了对吧,所以说我第一个诶来了,第二个把第一个覆盖了,第三个把第二覆盖了,以此类推,直到第60个八,第六十八五十九个覆盖的能听懂吧,问,所以这里边你要写啥呀?写个A,哎注意啊,同学们要写个A,就是追加a pen的,那同学们我们再来运行一下走你。
09:20
诶,会发现呢,东西还是没有报错,诶很好很好,之后同学们我要干啥呀,我要在这儿来看一下我们的接分文件,你发现是不是很多呀,诶很多,那我们要干啥呢?排个版呗,Ctrl alt加L。对吧,CTRL2加L之后,我看多少个哈,呃,这是一个两个你就查吧,对吧,你就查吧,加一起一共是多少个,四个四个。二百四十四二百四。把之前的给清空一下,把之前清空一下,同学们应该是60条数据对吧,那四个一个四个四行,一个一本书,所以说它240行就应该是60本书,没问题吧,各位,所以现在我们再看。
10:14
排个班。好,往下滑。哗哗哗哗,是不是240行,一共是60本书啊,明白了吧,大家哎,注意啊,这是啥呢?我们管道和item和这个爬虫文件的一个联合使用,希望咱们同学把它记住啊,但是这里边儿有一个小坑点,啥小坑点呢?不能说坑点吧,就是我们的解决策略不太好,他对文件操作的过于频繁。那这里边儿注意啊,这是有一个小问题的,什么问题我先写上,我们开发的时候可不这么干啊,可不这么干,但也有这么干的不多啊,说以下。
11:08
这种模式不推荐,为什么呢?因为每传递过来一个对象,那么就打开一次文件。对文件的。操作过于频繁。各位平繁,那么就容易有问题吧,对吧,就容易就容易有问题,所以说我们应该怎么办呢?同学们你咋办?你是假如说你要打那个在电脑上打字,你是把打一个字,然后把电脑关上,再打开,再打第二个字,再关电脑,再打开第三个字吗?是这样的吗?不是吧,各位,那你咋整啊?你是要干什么?同学们,你是不是要把电脑打开写写写,写完之后再关闭啊?大家能明白我的意思吧?
12:05
OK,所以说接下来呀,我要给大家讲两个方法。啊,这两个方法叫啥呢?叫这个第一个叫做DeFine,叫open_spider。Open要spider,然后我们来写上self,第yourself啊,Self第二个就是spider,这个参数不能有错啊,不有错,这里边我先打印一句话啊,打印加加加加加加,哎,你为啥写它一会我们得看呢,那么这里边我再来一个def DeFine叫啥叫close,下个线spider一个开一个关,还是再写一个spider。啊,Print来写个减减减减减,那这两个方法我为啥要写它注意啊,我先给你写个注释,这个注释是在爬虫文件开始之前。
13:04
就咋的,就执行的一个方法,哎,然后这个呢。在爬除文件执行完之后在干啥呢?然后执行的方法,也就是说他俩都只执行一次,来我们来看一下是不是这样的。啊,是不是这样的来运行它走,你看加号有了,减号也有了,是不是加号这。在爬虫文件开始执行,执行的,你下边数据吗?那后边是不是爬虫文件执行完之后,它又执行了呢?所以说这两个问题我们就搞定了,那咋写呀,这东西呀。我们这么写,在爬虫文件最开始之前呢,我就打开一个谁呢,这个对象等于啥?等于open写上book点杰森,然后这里边我这把啊同学们注意,我可不写A了,我就打不了,为什么我打开了我没关呢,对不对,等于utf-8O了,完事了,在结束的时候直接self.fp怎么的点close给它关闭,中间干啥同学们。
14:25
中间就写呗,Self点F一点right,然后干啥呀?写个str写完了,那么这个能代表的是啥呢?能解决我们对文件的打开和关闭过于频繁。啊,贵频繁,你贵频繁你就想呗,你是一个人,如果说全世界所有的人都在要求你做事儿,你会怎么样?是不是会崩溃呀,对不对,大家那就有问题了,你都操作你一个文件,你你今天说让他去打水,明天都说让他去去这个扫地,那能行吗?一个人干不来,是不是就是在这会儿怎么去处理这个方式大家一定要想明白啊好同学们,我们再来运行一下,看影响没影响我们的结果呢。
15:11
嗯,完事了吧,好,同学们,我们再来打开杰森,好,我们再看数据。是不是没有任何的问题啊,OK,完全可以啊,好,同学们,以上呢,就给大家啊封装了一说我们将来干活的时候怎么去做的一种方式啊,就封装了管道,我把视频暂停一下。
我来说两句