00:00
OK,同学们,那么上节课啊,我们把这个豆瓣电影的第一页爬到了,对吧?那接下来我们要干啥呢?你看我们先写一个小案例,然后给他描述一下是吧?来描述一下,在这呢,我们来创建一个新的文件,然后写上嗯,那这个是啥呢?Get请求,然后豆瓣电影的前十页。前十页数据,我要把前十页干啥数据全给它保存下来啊,全给它放在这里边,对吧,那接下来其实接下来的这个东西啊,它的难点在于哪儿呢?在于接口的寻找,那在这儿呢,是所以说为啥在开始的时候呢,我们很多的难点都在找借口,因为他不太好找,东西太多对吧。好,同学们,我们来刷新一下它啊,在这在这鼠标右键检查啊,点network network在这里边啊,我刷新一下,嗯,我们应该有经验了哈,同学们有经验了,也就是说这个接口应该叫top list,点它,诶这是啥呢?这是我们的一个小接口啊,是零到19,也就是说20个数据对吧?我把这个接口的地址啊给它干啥呀?给它复制一下。
01:18
给他粘贴到这里啊,然后给他回个车吧,回个车在哪回车在这回车吧,嗯,正好能放到第一行,诶这个S得要着啊,S得要着,然后把它来啊START0LIMIT20好同学们,那这个电影啊,同学们注意啊,它可不仅仅我把这个先关掉一下啊,它可不仅仅只有一篇啊一页啊,你往下滑看它是不是你一点点往下滑,它都在加载呀,对吧?而这个操作它的底层实现啊,后端的一个底层实现就用的是Ajax。啊,贾克斯啊,是这样一个东西,也有人读叫阿贾克斯的哈,那么也就是说它不仅仅只有一页,不仅仅只有20条,而是有很多条,对吧,各位,所以说在这里边儿,我们怎么能拿到前十页的数据呢?
02:13
这就需要我们去一点点去找了,找找啥一页,二页,三页,四页,五页,六页,七页,八九页,十页的这个接口。对吧,各位能听懂我说的吧,OK啊,那现在我在这刷新一下,诶,咱们刚才把第一页找到了,就它了,你看诶找到它了。OK,那找到之后呢,这第一页我就不管它了哈,我给它清空在这儿啊,点它clear清空你干啥呢?你往下滑,你滑到第二页的时候,他是不是一定会在这展示啊,咱划你找第二页滑,嗯。全是图片哈,诶这嘎又来一个他,那他是不是又是啥呢?第二页的数据呢,我们得找找啊,呃,刚才到杀人回忆吧,杀人回忆之后是勇敢的心,我们看啊,第一个是不是勇敢的心,看同学们没问题吧,诶,他就来了勇敢的心,那勇敢的心之后是啥呀,叫做乱,这是什么电影啊,咱没看过呀。
03:21
嗯,哎,不对啊,这是第一个吧,同学们,哎,在这了啊在这。是不是乱呐,在这里了,看到了吧各位,所以说我们知道了啊,你原来是第二页的接口啊,我把它复制一下,再给它粘贴到这里,一会儿我们来观察它的规律啊,在此大的回个声,嗯,好,同学们,我再把它清空一下,再往下哗哗哗。再滑滑滑,好,同学们又来个top list,那这个是不是呢?我们来看一眼,哎呀,接下来到谁了呀,看一下第一个是谁,第一个是谁叫做谍影重重,同学们这个看过吗?谍影重重完了找找呗,是不是谍影重重啊,嘿,哎呀,找不着了,咱不知道上一个是谁的是吧?哎,这谍影重应该没问题吧,谍影重重第41吗?看到了吧,各位是不是第三页41对吧?一页20条,第三页41条没毛病啊,然后进来终结者二阿诺施瓦辛格对吧?看是不是终结者二审判日阿诺施瓦辛格呀,OK,同学们,我们第三页的接口又找到了啊,又找到了,来把它复制一下,然后把它保存在这里边,我们得观察它到底有什么规律呢?走,嗯,同学们现在看啊,上边这三这个已经三页了哈,三页了,基本上我们通过三页就能找到它的规律了。
04:53
看把这个往这挪一挪,先上上边去啊,Httptp movie、豆瓣,Com go chart top list type等于5INTERVAL ID等于100,什么3A90什么之类action等号,哎,好像这都没有啥问题,对吧?各位呃,下边这个有没有啥问题啊?Limit limit米是20,那代表的是limit是什么?
05:21
是不是我们一页有多少条啊?对吧,各位,那前面这个start呢。啊,咱不追究他这个汉语意思,我们知道零到20 20~20 40~20,那这个我们就知道了,第一页数据是它第二页数据,它第三页,那请问同学们第四页给我猜一下。给我猜一下第四页的结果是多少?是不是60啊各位。明白了吧,大家,哎是60,所以说这里边我们的参数就找到了规律,找到啥规律呀,第一页我们得知道啊,同学们,第一页第二页第三页第四页它分别对应的是start。
06:10
嗯,这写个配置啊,写个配置,配置它对应的这个start的结果是多少啊同学们。第一个零啊,第二个20啊,第三个40啊,写错了40啊,第四个60啊,对吧,各位,那它们之间又有什么关系呢?这应该是小学数学题,那小学数学找规律嘛,第一页是零,第二页20,第三页40,第四页是60,同学们,小学数学题找规律会不会啊,那也就是说这个start的值。是啥呀,思考一下。大的值是谁?是不是就用配置减一去乘以20啊,嗯,一第页一减零得一减一得零零乘二是得零二减一。
07:15
得一一乘20 23减一得二二乘20,得44减一得三三乘20得60,没毛病吧,大家对吧,所以说在这里边我们就找到了start和配置之间的关系。OK吗?各位啊,OK吗啊,用现在比较流行的话叫啥咋说呀,听懂掌声对吧?OK啊同学们,这个规律你要找到,找到之后咱们就可以可以干啥录代码了啊,就可以录代码了,嗯,那得写写呗,写写,那写之前我们我们得知道要干啥,再总结一下啥呀,总结一下我们现在想做的事情。啊,我们要干啥,要下载下载啥呀,豆瓣电影前十页的数据啊,下载豆瓣电影前十页的数据。
08:15
那么这里边儿我们应该咋用几步呢?同学们,我把它打开啊,上边我们一共几步,有三步请求对象定制。获取响应数据下载到本地对吧,永远都是这样的,所以说在这呢,我们也也要这么写。点哪去了这了啊,第一个叫做请求对象定制,在这请求对象的定制里边要思考一下了,为啥呢?因为每一页的URL是不是都不一样啊。对吧,大家因为每一页UR都不一样,我这肯定是有连二十四十六十嘛,八十一百一百二一百四一百六一百八二百嘛,对吧?诶,但是我们大的方向你要搞懂啊,请求对象定制。
09:04
呃,然后紧接着是啥呀。叫获取响应的数据,对吧,第三步我们要干啥呀,叫做下载吧,哎,下载数据。嗯,下载数据,OK,没问题,那这三步我们应该咋写呢?带大家写一个我们在企业级开发中常用的一种编程的模式,在这儿啊,我们要做一个请求对象的定制,我给它封装函数啊,同学们请求对象的定制。那这个我们得想想咋做呢?假如说我们在这写一个这么玩意玩意儿啊,这是一个入口啊,他就是你这句话,其实写不写都行无所谓啊,但为了更加标准一点,更加能贴合到我们的企业级实战来说,我就按照企业级开发的这个流程,我们来编写这段代码。
10:06
这就是一个程序的入口啊,它是一个程序的入口,写不写都其实都可以啊,程序的入口第一步我们要干啥来着。呃,你要遍历十页,所以在这儿呢,我们先写第一个吧,写的简单一点,起始页码吧,来写上啊。啊,写上叫start,我输入一个啊还记得input吧,啊这个start配置叫啥呢?叫做input叫做起始的页码对吧,页码就是你你最开始你要获取第几页到几第几页对吧?我们叫做起始的页码,请输入啊再加个请输入OK,那那同学们这个方法的一个返回值是啥类型的呢?是不是字符串来的之前的。对吧,各位,哎,是字串,所以在这儿呢,你要把它变成一个啥呀,一个整形,千万不要忘记啊,千万不要忘记,因为它是字串啊,所以说我要把它变成一个整数啊,变成一个整数,然后接下来N的下划限配置等于int来源,写上input,然后请输入结束的页码啊,一个起始一个结束,对吧?那么接下来我们要干啥呢?我要遍历一下子,你你要干啥?为啥要遍历啊,因为我们是不是要获取的是一到十页啊同学们对不对?所以在这里边呢,我们用for循环遍历一下,先直接写啊叫page in啥呢?是不是range,我们之前写过类似的案例,对吧?来写上start page置加上n page置,我先来直接打印一下啊配置看结果啊,来运行一下,走第一页第十页你发现它。
11:58
打印的是一到九对吧,各位,因为之前我们在Python基础的时候讲过,这里边是不是叫做左闭右开呀,所以你要咋整啊啊,所以你要咋整,是不是要给它加一个一呀,对不对啊,所以在这里边我们再来运行一下10走,嗯,是不是此时就是一到十页了。
12:23
对吧,大家好,那么现在我问一个问题啊,兄弟们,上节课我们写过一个案例,每一页都是不是要经历这三步?是不是每一页都要经历这三步啊?没毛病吧?所以说在这儿我定义一个方法,让这个方法要求每一页都定制自己的请求。啊,这里边每一页都有自己的请求对象的定制,哎,你这得得理解,得知道我们才能去做,OK啊,那在这里边写个啥叫做create下划线,自己起的名啊create下划线叫啥呀?Request写哪去了?Request哎,就这样一个方法,那现在你是你定义呗,对吧,你既然要用,我是不是定义一下子create_request。
13:23
嗯,在这里边紧接着要干啥呢。啊,请求对象定制咋定制来的,你是不是有个URL对吧,你这个URL接下来还有个hi对吧,各位诶这我们得知道啊hi等一个字典UA我们知道,随便找一个,哎,找个UA。就它了,UA我们知道,但是我们现在的难点在于哪儿呢?兄弟们,我们难点在哪?我们的难点在于这个URL每一页是不是不同。对不对,但是我们之前找到规律了,它不同在哪,是不是不同在start,其余的是不全一样啊。
14:05
是吧,各位,所以兄弟们,那么接下来我们就在这儿把这个基础的ul复制一下。我给它起个名叫做base象限ul等于就是它啊,那么下面是不是还有俩参数啊,一个叫做start,一个叫做limit,没毛病吧,这里边几个啊,在这。写个date啊,这个顺序无所谓啊,呃,你如果写在上边也行,写在上边吧,这样的话大家看着能更清晰一点啊,Date等于它,哎,我们说这是不是一个get请求来着,在这啊,Get请求的参数是不是拼上啊,而不像poose请求一样啊,哎,大家这些知识点呢,都是为了之前学这些知识点,都是为了后续做的一个铺垫啊,那么在这儿我们第一个叫做start。嗯,Start start后边值啥嘞。
15:02
是不是一个动态的零二十四十六十八十啊啊,那紧接着还有啥呢,还有叫limit。厘米它这个值是固定的呀,对吧,厘米的这个值固定是多少,是不是20啊。对吧?各位,那这个star的后边这个值和谁相关?诶我们之前写过呀,和谁相关,是不是和配置,那么配置你咋来呢?同学们,我们学过一个参数问题啊,你调用它的时候,你是不是可以把这个配置传递给他呀,一个行参,一个食参嘛,对吧?各位,诶你这你得知道啊,你你为啥什么时候设定参数,就这时候它有用了,因为你执行第一页的时候,它就传了一个一,传了一个一,它的结果就是配置减一去乘以20,明白不?各位,配置减一去乘以个20是不是就可以了呀?当然这里边缺一个啥呀,缺个冒号啊OK吧各位,你传二我就变成20,你传三我就变成40,你传四我就变成65 86。
16:18
就100没毛病吧,所以说大家注意啊,这个date是不是就有了呢。但是这个date这两个值,同学们你现在是不是得用啥呀,用语拼一下子,同学们你要用什么支点在告诉我一下啊,用什么支点,是不是用pass没毛病吧,那现在呢,我在这儿导一下啊,Port的用啥倒啥,别着急啊,Pass。紧接着在这date等于Ud.pass.ul enco对吧?这边传一个date OK,同学们想想get请求后边需要再加in code的吗?需要吗?是不是不需要啊,因为post请求才需要吧?OK啊,各位啊,跟上啊,那么这个date完事之后,我们的URL是不是就有了呢?等于base ul加上date,那是不是就可以了?同学们我们来看一下,打印一下ul,看一下是不是前十页的数据呢?来运行一下,走你第一第十页走,同学们观察它,看它零,20 20,二十四十,20 60,二十八十,一百一百二,140 160 180,没问题吧,随便点一下看一眼走。
17:42
你看是不是数据就给你了,帅不帅,OK啊同学们,那这个地址我们就拿到了,那我们就拿到了,拿到之后干啥呀,你不是要这么看吧,对吧,各位我们要干啥,我们要把它下载下来对吧,那下载了接下来我们请求对象定制啊是不是,所以在这里边呢,写上request。
18:10
等于谁?诶请求对象定制,你是不是又需要啥了,原地吧,点request呀,所以说大家注意啊,写代码真正的奥义是什么?需要啥来啥啊,需要啥来啥,等于ul立点request,点大写的request。里边传上啥呀,URL等于ul等于hi没问题吧,各位,这个就给我们返回了,给我们定义了一个啥十个request OK吧各位,嗯,好,这request子有了,那接下来我们要干啥呀。啊,同学们进来没干啥,我们接下来是不是要这个,你看第二个啊,要干啥,要获取响应的数据吧,是不是要获取相应的数据咋你起个名呗,定一个方法呗,这不就封装吗?跟我们之前学过的Python基础,学过UR lab基础是不是全。
19:16
整合在一起了,对吧,各位,那这个叫啥呢?叫get_content啥意思啊,获取响应的数据吗?这里边需不需要参数我们也不知道,我们先写着啊,反正这个有个request了,来DeFine get_content嗯呃,这个要获取响应的数据的话,那我们就是咋写来着,是不是response等于yourr li.request.url open。对吧,然后呢,诶这里边写啥呀,同学们。啊。我这里边写啥。
20:01
我这里边是不是要写写request啊,但是我哪有request呀,我我也不能直接硬写呀,对吧,你写肯定没有啊,那我这个request在哪啊啊同学们这里边注意啊,同学们我们就要用到啥了呢。用到返回值,看上边这个方法,我没有写返回值,那现在我写上一下return return啥呢?Request,那么也就是说我还记得我之前给大家举个例子呢,对吧,天气比较热。我让我女儿去给我买啥,给我买这个雪雪糕冰淇淋,我让她去买,她给我,我是不是得收着。对吧,各位,所以在这儿当我调用了啥,当我调用了它的request之后,我是不是得可以接收一下它呢,对不对啊,他给你了,你就收着,收着完之后,你看你在这个的范围下,是不是就有了request。
21:05
有request你进来干啥?传给他不就完了吗?对不对?传给他,传给他之后他可不可以接收啊,必然呢?你接收之后,你在这儿能不能用啊,必然呢,对吧,大家OK啊,这就是我们之前的Python基础的一个完全的整合的一个应用啊,一个应用,OK,同学们,这个request我们知道咋传了,那接下来要返回的是啥content呀,等于啥response.read.decode来写一个UTF杠八好,这个东西有了,我这个数据有完之后啊,我们接来干啥呀,同学们。啊,我们接下来第三步是不是要下载了,我这写个注释啊,啊这这叫啥呀,获取响应的数据,最后一步干啥下载起个名叫啥叫当漏写上下载啊。
22:13
哎,这怎么没对齐呢,对齐一下。过来过来,诶好对齐啊好,同学们,接下来在这写上一个啥叫当下线漏。好OK,那么紧接着这东没有啊,我再去干啥?DeFine当下划线load好同学们,那我咋下载来着?同学们有两种方法吧,FP等于那现在干啥呀,说这里边啊这样啊,叫我用这个用我们新的学这个微with open等于啥呢?随便写一个名叫豆瓣豆瓣,然后点杰森,但是我我想问一下啊,同学们,你是不是每一页,每页的文件的名字是不是都不一样啊。
23:06
对吧,你不能所有的文件都一个名,那咋可能呢?怎么可能呢?是不是不可能啊,所以在这里边我们可以干啥啊,同学们,这个很巧妙的一个设计啊,在这里边我给他传一个配置,传一个配置之后,你看豆瓣加上一个字符串。哎,加上一个谁呢?加上这个配置,你给他传过去,我收一下是不是啊,给他收一下,收一下之后,我在这儿拼接一下配置,再加上一个啥点儿杰森。哎,拼接呀,这里边加上下划线吧,明白吗?就是豆瓣下线一点接森,豆瓣下划线二点接森,豆瓣下划线三点接森,但这里边有个小bug,一会儿我给大家讲。啊,有个小bug,同学们你现在能想到吗?有小bug啊,W模式。
24:00
好,第三个我们说是不是有应该有个coding来着,对吧,咋的,它是不是可以写中文as FP lp.right来写,诶写的内容是啥呀,同学们写的内容是不是content,但我这没有啊。没有content咋整,你上边不有这content吗?我给他返回,你看这不就是编程的逻辑吗?返回返回给谁返回给他调用吗?还是买冰淇淋的小案例对吧?等于啥,等于他他返回了,那这是有没有,是不是可以用在这里边我写上一个content,它调用这个方法,这个方法给了一个返回值啊,给了返回值,而我在这儿收到了这返回值,返回值是不是可以用啊,当它是不是再次会传递给谁,是不是会传递给download content,那现在我是不是就可以干啥呀,写这个数据了,对吧?各位,这是前十页的一个数据,我们试试吧。
25:08
当然我记住啊,提醒一下各位同学,在这我们有个小bug啊,看一眼右键运行第一页第十页走。走,来看报没报错,报错了,为啥呢?说这个字串啊,Not in啥意思,你看是不是报这行错呀,为啥?各位啊,同学们,我记得我们在Python基础的时候讲过,说如果要和字串拼接,加号的两端必须咋的,是不是全都是字串啊,所以在这里边我们要干什么?强制类型转换明白了各位,哎,在这里边必须要强质量转换,否则它拼接不上,OK,各位,那现在我们来运行一下它走你啊第一页第十页走,接下来大家敬请期待我们的一个结果,当然呢,这里边可能这个有点时间长,因为页码比较多,数据量比较大,这一共多少数据啊。
26:11
十页,一页有多少条,也有20条,一共是200条数据,嗯,二条数据。当然有同学老师你这个下载一下有点慢的话,你后期是不是可以优化,当然必然呢,好同学们我们来看一下啊走那上节课的时候下课呢,我把这个快捷键调整了一下哈,原来我调整的是ctrl shift加I,现在我给他改又改回了CTRL。Out加L,嗯,你看啊,第一页福尔摩斯二世最后一组数据是什么来着,叫叫韩国片是吧。叫做杀人回忆。第二页走,Ctrl alt加L是勇敢的心,没问题吧?第三页走,还记得吗?叫谍影重重,下一个是什么三个字吧,叫什么二来着。
27:02
哎,终结者二对吧?哎,以此类推,第十页走是不是叫出行人呢,对吧?好同学们,以上就是给大家讲了,我们下载了豆瓣电影前十页了,这里边呢,这个案例非常非常的综合性非常强。啊,综合性非常强,希望大家把这个案例好好念一下,OK,我们把视频暂停一下。
我来说两句