00:00
咱们做一个这样的功能啊,咱们呢,前面根据这个类啊,已经写好了一些东西啊,我这里呢,复制写复制个零九是不是好,我们再来写啊,本来是自动回复,咱们在这呢不写自动回复,我们写这个项目的热门功能啊,热门功能。好,这个功能我们看一下,我们呢一开始呢,有这样四个功能来看,首页热门文本和语音,是不是我们呢,本来要实现这些东西,那下面这两个呢,它是比较简单一点的啊,但是呢,由于我们的豆瓣网页现在没办法访问,所以说现在做不了,那我们呢,先去把上面的写写啊,把这个服务器停一下,把上面写写,我们先去实现这个热门的功能,那我们做这个功能呢,是这样的啊,当用户呢,嗯,输入一个热门,我呢就得回复他一个图文列表,图文详细列表很长一串,这些列表里面呢,就包含着现在最新最热门的一些电影信息,是不是就包含这些信息,同样当我点进去这个图文列表的时候呢,会跳转到我设定的一个网页中,这个网页中呢,就是我这条电影信息的。
01:09
也可以说是电影详情页,是不是它的一些具体的一些介绍,是不是就在这里面去看,那我们呢,就要去做一个这样的功能,那么我们做这个功能就一步步先写啊,首先呢,我就希望热用户啊,输入热门的时候,我是不是回复一个图文消息列表给他啊,先实现这个功能,再来去实现我这个电影下吸先一步写,我现在把这第一步做完好,要实现第一步的话呢,那么我目前就有一个这样的问题。我呢需要有这些热门电影的数据是不是,但是我本地有呢,没有是不是,所以说我们就得去想办法去某个地方去拿到数据,那在这里呢,我们写一个。啊,简易的爬虫,我们去取我们想要爬取的所有的数学好,那么这里面呢,我们写一写啊,我把这里还是改回来,当他刚刚不能我改,因为呢,我在某些地方还引用着那个文件,当我把引用东西全部停掉,全部关掉之后呢,我就能修改这个名字呢,项目的热门电影。
02:15
好好稍等一下啊,改完了是不是好,接下来呢,我们去写这个爬虫啊,写成爬虫来,这里面呢,我们大家要介绍一个库,叫做。一个这样的,我们上get上可以看一下啊,这个呢,就是我们去实现爬虫的一个库,这个呢,当然不止这一个库能够实现,但是呢,咱们可以利用它,这个东西呢,是谷歌开发的,叫做pop tear。好,我们来先登录一下啊,登录一下,然后呢,我搜一下。PU就是这个啊,搜一下在这里谷歌开发的,现在大量有三万多个,是蛮不错的一个东西啊,好大开它这里面呢,会去介绍一下它,我这个库呢,它叫做是一个无头的一个no API就是无头。
03:17
无头就是没有头是不是,哎,无头什么呢?啊,我们也叫做这个库叫做无头浏览器,那无头浏览器有什么呢。没有啊,没有什么没有请求啊,不是的,这个并不是这个意思,只要你发请求,一定请求,并不说没有请求的,他这个意思呢,是说没有见面啊。吴桐的意思是没有界面的意思,说明这个浏览器呢,它没有任何界面,它是在后台运行的,就说你看不到这些任何界面,但是呢,实际上呢,你是在访问一个网页,这际上是在访问一个网页啊,这是无托暖器,那我们接下来来看一下它是怎么去介绍的哈,这里面有很多很多介绍,我们就不应该看了哈,大家待会呢去看一看,总之呢,这个库呢,就是一个note的一个库,借助这个库之后呢,我们就会去去对这个浏览器进行一下操作啊,从而呢,能够去爬取到浏览器上面的一些数据,那这里面有个API是不是API文档啊,API文档打开。
04:25
那这个API文档呢,就列举了它上面的所有的一些文档,所有的文档,所有的方法,所有的属性呢,都给你列举出来了啊,另外呢,在一开始的时候呢,它拿一个get告诉你如何去使用,那么你mi是不是这个这东啊下载,但是这个库比较大家不用下载,我把这个已经打包放到我们的共享文件夹中,待会呢,大家就去解压那个共享文件夹中的这个库,然后复制到你项目中来,好这是第一个,第二个呢,它的使用方法呢,这里面有个最简单的步骤啊,它使用方法呢,我们大致分为五个步骤。
05:02
哪五个步骤呢?我们来看啊,首先这个引入这一块我们就不说了,我们要使用它是不是首先就得引入啊,首先引入好它分为哪五个步骤呢?第一步你首先得打开你的浏览器,是不是那第一步这一步做的事呢,就是打开你的浏览器,打开浏览器,打开浏览器之后还不够,因为呢,你是不是要去某个网页上爬取东西啊啊,所以说对他来说的话,他还得做些事。新建一个这样的tab标签页,那先得有个标签页,我才能在这个页面上是不是进行网页的访问啊,啊所以说第二步呢,新建一个标签页,那第三步呢,就是要在这个标签页上跳转到你的指定的一个网址,是不是跳转到指定网址啊,第三步呢,就是跳转到指定网址,那第四步呢。指定网址都有了,你是不是可以根据网页下载的内容,你去这个网页上爬取你想要的数据啊,是不是啊,也说第四步呢,才是真正的爬起数据啊,在这个地址上呢,它这里是截屏,相当于是呢,对你整个整个页面呢进行截屏,然后呢,保存到一个某个地址地址上是不是它这是截屏啊,那对于我们来说的话呢,我们不是要截屏,截屏对于我们来说没用,我们要的是数据是不是,所以说我们第四步呢,要去爬取数据,好爬取完之后,是不是所有数据都到我们本地来了,那么我是不是不需要这个浏览器了,所以说你记得一定要给将它给关闭啊,也就说这五个呢,就是对应的我们五个步骤,五个步骤,所以说呢,说白了,这个无头这个爬虫呢,就是相当于我们模拟自己打开浏览器的一个过程,是不是通过代码的方式模拟打开浏览器的一个过程,就是这样,然后只要你跳转到指定的网页之后啊,通常的跳转完。
06:52
那之后可能我们会等一等。为什么跳转完之后要等一等呢?
07:00
你想页面当你跳转到这个网址上,它能立马下载,下载出来你想要的东西吗?下载不出来,是不是只要你等个几秒钟,它是不是什么GS什么CS全部加载好之后,是不是这数据才是完整的,那么这时候你爬去才好,所以说通常呢,我们会在这一步跳转的时候呢,再等一等,等一等之后呢,是不是再去爬取相应的数据啊,再爬取相应数据啊,那这个呢,就是一个最最基本的使用了,当那肯定不止直接使用这个库里面呢,还介绍了很多很多方法啊,它呢。有对各种标签的详细操作,也能够去来看吧,看这个keyboards它这个keyboard是键盘的意思是不是它是它可以模拟键盘的点击事件,也可以通过这type指定你具体要哪一个键,你可以自己指定。可以自己指定,也就是说你想要通过这个东西可以做什么事呢?通过这个呢,其实可以模拟一下你的账号密码输入,甚至呢,当你比方说你要查取的数据需要你进行登录,比方说微博等等,或者QQ空间等等,他们是不是需要你登录之后才能爬取数据啊不,不登录你连啥都看不到是不是,所以说它呢,可以去模拟一下你的登录,找到你对应的东西,然后输入你一下输入数据,然后模拟一下登录,然后登录之后呢,等登录成功之后,它会自动跳转到另外一个页面,然后再等一会儿,然后就可以去爬取到你想要的数据了。
08:24
然后还可以模拟鼠标操作,是不是鼠标的点击事件啊,鼠标大事件等等它都可以做,然后这个SY呢,分别对应的是你的,你想在你屏幕的。哪一个坐标点进行点击它呢,默认这里是。零零,然后呢,XY呢,是以像素的方式,以CS像素的方式去做的,你想要点击哪个按钮,你自己要想办法算出来它的它位于屏幕的距离是不是,然后呢,这时候呢,就能用这个Mo去点击它了,就能够点击它了啊啊这是这些东西,所以它呢,基本上我们用户能操作的东西,他都能够通过某些方法能够去模拟我们用户的操作,从而呢,能够去爬取到我们想要爬取这些东西。
09:11
啊,想要爬取的东西,那东西在上面,那我们就不一个写一个,不一个个说了啊,我们呢,就来真正来看一下到底怎么去爬取我们想要的数据,好,我们是不是要爬取热门数据啊,那首先呢,我是不是要找到这个网站啊,我要找到网站,我要看一下它页面结构是怎样的,我才知道该怎么去爬取是不是,那我们去找一下,比如说我去豆瓣上去查啊。找一下咱们豆瓣是不是豆瓣电影,咱们他指的是电影啊,好找动一瓣电影,然后发现这里是不是有个正在热映啊,哎,这个正在热映呢,就是我们的热门电影信息了,是不是,那我们呢,打开全部正在热映啊,全热映,然这里面呢,会显示了这么多是不是,那我们呢,只不需要所有的啊,其实我们只需要其中的。八强。啊,这个八条是为什么只需要八条呢?啊,这是因为我们待会是不是要把热门电影数据回复给用户啊,是不是,那我们回复的时候说了,我们以什么样的形式回复给用户呢。
10:14
叫做图文消息,是不是记得吧,图文消息好,正是因为以图文消息回复用户,而这图文消息呢,它有限制,它有长度限制,它最多允许有。八条消息,那多余的呢,它就显示不了了,是不是,所以说呢,我们最多是不是只能回复用户八条消息啊,那么我们就只爬取八条数据就可以了,只爬取八条数据,好,那咱们再来看啊,是不是待会我要来到这个页面,是不是来到这个页面上去爬取到这上面的以下八条数据,对不对,以上八条数据,那我们要爬到什么呢。首先来看啊,其实这些页面的话呢,我们来检查一下,检查一下。待会呢,这个image,这是一个图片啊,图片不是我看的,这里是不是有A标签啊,诶这个A标签这个地址我们看一下。
11:08
我就点进去了这个A标签地址是不是跳转到我这个电影的详情页面上,诶我们是不是待会就真正的就是要向这个电影详情页上面去爬取我想要的这些信息啊,你看什么导演,编剧,主演,什么类型片场等等是不是很多,还有这个剧情简介是不是都在这,哎,都在这,也就是说我待会要爬取的数据呢,是不是都在这里进行爬取啊,都在这进行爬取,好,那我们知道这了,那首先呢,我不可能直接来到这个网页,因为呢,我待会是不是要在这里去想办法获取到这八条电影的对影的他们的那个电影的这个页面的这个地址啊,是不是只有有了这个地址,我是不是才能点进去爬取到这些数据啊,好取这个数据啊,那你不可能把这八个八条电影的这个网址,你自己手动的去输啊,那这样就太太不方便了,是不是,那我们呢,应该就是输入这一个网址好,他待会要做什么事呢,首先。
12:08
你得帮我把这八条数据。对应的那个网址是不是要爬取下来啊,对应网址爬取下来,然后顺便呢,把这些,诶这里是不是有这个抬头,还有这里有什么。画面图,还有这里有个屏分,诶这三个呢,我也保存下来好,这里呢,爬取的话,页面结构简单一点,我去爬取这三个呢,比较简单,好先把这个爬取下来,好,这是第一个,第二个爬取的东西呢,就是待会啊爬取完这些基本数据之后啊,我是不是还得进去这个页面里面还要接着爬取啊,页面里面接着爬取,还要爬取这些所有的这些我想要的些数据,是不是想要数据,好那待会呢,我们就得去写了,我得写了啊好,我看一下怎么写呢,我们来写一写。我们呢,因为写爬虫这个爬虫呢,肯定和你的服务器是脱离的,因为呢,我爬虫应该是比如说我服务器呢,我微信服务器,比方说我这公众号是不是在运行中啊,那么我这个服务器呢,就不能关啊,一旦某个项目在运行中在上线了,那么你这个服务器是不可能关的,不可能你把它停掉再开启是不是啊,这样呢,是会导致那关掉跟重启那一部分的。
13:20
那个流量是不是就没了,那用户呢,就访问不了,对用户体验来说是不太好的,所以说我们这个开发者服务器是不会停的,一旦你运行的时候就不能停,所以说我们爬取数据呢,我们自己去写一个服务去做这个事,专门去爬取数据的,那今后呢,我这里要使用数据的就使用我到时候爬取的数据就可以了。啊,那我们呢,去新建一个文件叫做R,我们在R里面呢,专门去爬取数据。新建我们就讲讲,So,在这里面呢,再新建一个我们叫做啊,就是爬虫的意思。我们在这里面呢,去爬取我们想要的一个东西。
14:01
好,在这里面再新建个文件,我们呢去写个爬虫,叫做我们的热门电影,是不是叫做sweet?热门的一个爬虫C,热门的电影的一个爬虫,好,咱们看一下怎么写啊,那我首先呢,就得下载那个库了,是不是下载那个了,那我这里呢,还是给大家模拟一下正确操作啊,咱们正常情况下呢,诶我原来的这个微信公众号这里面我用PMI这个PU是不是要想载它,然后我们想想啊,它是什么依赖。是生产还是开发,想一想生产还是开发生产环境是不是我开发需要这个爬虫吗?不是,他应该是开发环境生产需要这个爬虫吗?你上目上线了啊,项目上线了,你还需要去用这个爬虫去,你上线的时候还要去爬吗?不需要,这个东西是你开发的时候去使用的东西,你项目上线不需要的,他照扩了100多兆啊,你要是放到你的开发中,放到你的那个生产中,那你想想你的项目100多张,人家用户拿到一个100多张的文件。
15:16
你说可能吗?人家访问你个页面100多兆,你说它要加载多久,少说一个100秒以后吧,是不是你说你宽带比较快,一兆一兆每秒,那你是不是还要100 100秒以后用户可能会等你100秒,那不可能的啊,所以说呢,这个肯定是一个。开发依赖啊开发依赖看一下能不能下载下来,如果可以的话呢,我们就下载,下载不了的话呢,对大家来说的话呢,你就将我那个包是不是复制进来啊,复制到我这no MOS中,最好是你在这个package dress里面呢,你也去把那个依赖相对应的添加上去,最好你看它这个库呢,有。127兆是不是非常非常大啊,所以说呢,下载不下来没关系啊,大家就用,我到时候给你们提供东西,好让他去下载,我呢不管它啊不管它,我呢去把我们这功能写一下,首先呢,我要使用它的话呢,我得先。
16:14
引入它这一步呢,是必须要做的啊的话呢,引入它PU引入接下呢,我这里呢是个爬虫,我呢把它定义成一个方式,定义成一个方法,待会呢,谁去调用它的时候呢,就直接去使用就行了。电使用啊,我呢就把它成,所以说等一个。函数是不是等于个函数好在这里面呢?我待会儿要去爬虫,因为这是爬取。这个模块呢,是用来爬取热门电影信息的,是不是,那我就把这个URL地址呢给它定义好。我把那个热门地理信息的地址,是不是告诉他这个地址呢?就是我是不是单写这个地址,单这个地址把它CTRLC,然后CTRL1放在这里啊,待会呢,我就使用这个地址,好,接下来呢,就是我们要写爬虫的这五步了,那大家还记得哪五步吗?
17:14
第一步,我要。啊,打开浏览器,对,就是打开浏览器第二步呢。要创建一个太阳标签页,是不是表情页,然后接下来呢。还得跳转到你要的一个指定网址,是不是才能啊,得跳转到指定网址,第四步呢,就是。这开始,因为网址是不是好了,等待网址加载完成是不是,然后开始。取数据是不是开始取数据,然后呢,最后一步呢,取完成之后啊,你要记得将浏览器是不是关闭啊,关闭浏览器啊,就是一共这四,一共这五部,一共大概就这五步,那我们来看一下这代码啊,这码呢就是来到我们的这个这里我们把这个第一步先写一下。
18:14
那一共就这四这五步,我们把它复制过来。CT步、T步。第三步。第四步第五步是不是,然后它这里是不是用了一个关键字啊,所以说我们这里要怎么改装呢。啊,将函数改成啊S函数才行,好这时候是不是改成好了,好,这里面呢,就是这五步啊,当然呢,这是截屏,我不需要啊,待会我把它我把它删掉,那这五步呢,这里面有些要设置的东西,比如说这里面呢,它会传个配置对象,配置对象,那这个配置对象里面能传些什么参数呢?它有蛮多的啊,有一个参数叫做ARGS。它呢只是个数组,在这里面呢,你可以传很多很多东西。
19:01
传什么东西,具体这个东西能传什么呢?都可以上这个官网上这个API文档中大家可以看啊,我们找到这个对应的这个它的一个lunch方法,你看是不是的lunch方法,它这里面呢,点进去就会告诉他可选项有哪些啊,那我们给大家介绍一个比方说head。这里是不是说的无头的意思啊,无头的意思啊,那这里呢,我们也说一下。先看一下headless。它的默认值为,这里的意思就是无头浏览器以浏览器的形式打开。打开浏览器啊,浏览器呢,意思意味着就是没有界面显示是在后台运行的,是不是运行的,那默认呢,就是这样的方式,默认值就是如果你改为false呢。
20:03
它就会打开浏览器,是不是让你看到啊,如果你设置为fo就会打开浏览器,是不是不要设置无头模式就会把浏览器打开啊,那我们可以看一下,待会看一下啊,我们尝试设置force,然后这里是不是个lgs啊,Lgs这里面也有些参数可以设置的,在这里lgs呢,它能设置很多很多东西,那它具体的设置呢,都在这个here这里是不是可以打开了。当然呢,它这里还有很多设置啊,你可以到时候去看啊,到时候去看非常非常多,它可以说你需不需要自动打开那个开发者工具,是不是是不是它默认呢,它会设置为false啊,那你需要打开的话,是不是把它调为处啊啊调为处就会打开开发者工具了啊啊然后呢,诶这个页面呢,可能比较卡,东西比较多,它有非常难的东西看所有的这些东西呢,都是你可以设定的参数,大家看一下这边的界面有。满满多的东西是不是,那如果你需要去具体设置某些参数的话呢,那么你就要在这里设置啊,具体设置某某参数就要设置啊,那我们就我们呢,之前呢,设置过一个这样的啊叫send boss看搜一下啊send。
21:14
Box看一下能找到什么?呢有非常非常多啊,一共有很多很多东西,我们看一下啊,我们呢,一开始设置这个东西啊,它呢能够让你所有的进程呢,它呢以无头的吸的方式打开,是在一个沙盒的方式打开。沙箱啊,Sendboss就是沙箱的意思,它然在那个沙箱里面打开,可以这样去设置它,那设置这样的话呢,你就看不到你那个浏览器了,你就看不到浏览器啊,所以说我们先把它给注释掉啊,通常情况下我们去做爬取的话呢,我们这个值呢,都会使用它的默认指处,就是压根不想看到这个浏览器啊,但是呢,我们了验证一下,我们把它成会看一下啊好,这是这些测试,然后另外呢,这里是不是打开一个新的,就是通过你这个生成之后呢,是不是多了一个浏览器对象,然后浏览器对象通过浏览器对象的一个方法,就是new配置方法,你就会得到一个标签页是不是,那这个呢,就是那个标签页对象,通过标签页对象调这个高度方法,是不是可以拿到一个具体网址啊,那咱们要跳转的网址是。
22:24
是不是这个ul啊,对不对,我们要跳转到这个ul,同时呢,它后面还有一些参数配值的。啊,这个参数呢,我们就比较有必要了,我们来看一下,这时候呢,我们看一下这个。配置的构to方法是不是我走配置的构to方法,诶是不是这它的第一个参数是ul,第二个参数是不是options,好,其中option呢,这个参数呢,在这里面也可以设置的啊,那咱们呢,要设置这个with until with until,那我们设置为next one work IDO well设置为这个啊with跳也就说这里面呢,我们当时设置个这样东东,它的值为这东西是不是就是这东西,诶为什么这样设置呢?它能干嘛呢?
23:06
它能够等待网络通行时再跳转加载页面。等待网络空闲时再来跳转加载页面啊,这样的比较好,如果网络忙的时候呢,你跳转过去也没用,因为你这个资源加载过来要消耗大量的时间是不是,那如果你网络不是空闲的,你去下载的话呢,你会发现,那我这是不是跳转网址啊,他只要跳转到了,他就不管了,好此时呢,你是不是接下来要爬取数据啊啊,你网页都还没有加载好,是不是让你去爬取,你是不是爬取不到想要数据啊,所以说就会出问题,所以说呢,我们在这呢就是。等待网络空闲时,这时候网络状况是不是比较好啊,那再去加载的话呢,就比较好好,那这第四步呢,是不是等待网址加载完成啊啊,如果你网络不好的情况下呢,你在这里做什么事呢?就可以开开启一个。
24:02
岩石器。岩石,比方说岩石的什么呢?延时两秒钟。再开始,再再开始,爬取数据。你呢,如果网络实在不好,你在这里手动延时一下,延时一个时间呢,你具体你自己看,比如说一秒钟两秒钟啊,延时这个时候呢,再去爬起数据,这样呢,能够尽量的保证你这个页面的加载是没有问题的,再去爬取数据是这样的啊,比方说我们去延时个两秒钟,那我们该怎么写呢。塞开帽是不是啊,咱们写延时器肯定想到它,那我们这里都用系统函数吧,有两秒是不是这样的,好,那通常情况下呢,我们是这样啊,我们呢,应该是保证这个延时器两秒钟之后执行完毕,我是不是才执行其他的,那我该怎么做他才能两秒钟执行完毕,我才执行其他的呢?
25:00
啊,我前提是我不想把这个东西写在这里面啊,写入里面呢,又陷入那个回调函数中,切断回调函数,那这样让我不开心,那我呢,就希望它变成一个同步的方式去写,那我该怎么写。把它。做什么事啊?包装一层promise项可不可以呢?是不是因为它是个异步的方法?Set是不是异步的方法,你想要它真正的同步的方式表达的话呢?那么目前来说我们只学了promise对象,是不是才能做到这一点?那我们就假设定义个函数。这个函数的名称呢,就叫做out,就叫做延时,可以吗?好这里面呢,就是专门去定一个setout,为了保证它能够执行下去的话呢,我要一个new promise对象是不是好我这里呢,就写我只要这个数就可以了,别的参数我用不着是用不上的话,一般是不会出问题的啊好在这里面呢,我是不是待会等他两秒钟执行完毕之后,我是不是要第二轮做方法,好那我可不可以这样写呢?
26:09
可不可以这样写行不行?想想我这样写能不能实现我的功能,他能不能在两秒之后调用这个so方法可以。可以对不对,你看我的S代奥函数的话呢,它是不是在我这个两秒钟之后执行我这个传入的第一个回调函数啊,诶,我传的回调函数是不是solve这个函数,所以说在两秒钟之后是不是直接会执行这个solve方法,哎,这说明就是将我的promise状态是不是改为成功的状态了,改为成功状态了啊,所以说如果你这个回回调函数中只有简简单单一个方法的话呢,你可以不妨把这个方法直接写在这啊。就写在这,然后这里呢,我们还是写简单一点,因为呢,它就一行,是不是就写成一行了,写成一行就可以了,好接下来呢,我要使用是不是这样这个帽函数,然后呢,在前面用的什么字。
27:03
它就会等两秒啊,就会等两秒啊,等两秒,等两秒之后呢,是不是开始爬取数据啊,爬取数据好,那这是这一个啊,当然呢,咱们呢,可能如果我这块网比较好的情况下呢,可能我还用不上这个,因为用上它的话呢,会导致我这个爬取时间呢,是不是非常长啊,非常啊,待会呢,我们都来看一下啊,网比较好就不需要用,网不好的话呢,你就还还是要把它加上啊,那接下来是不是要爬取数据了,爬取数据呢,调用的也是配置的一个方法。叫做这个方法,这个方法呢,可以一个函数。传的函数,然后在这个函数中啊,你可以对我对这个加载好的页面。进行操多操作了,你就能对这个加载好的页面进行操作了,好,你无非就是对这个加载好的页面进行多操作,通过获取多模操作,获取它的模do姆,获取到多姆时中呢指定的一些文字,然后把这个文字呢,就是我需要爬取的内容,是不是要把这个内容呢,让他给想办法保存下来,是不是保存下来之后呢,你才能够真正的是不是做其他操作啊,做其他操作啊,所以说要这样保在这里呢,我们就可以做这个事,然的呢,所有的方法呢,它都包装了一层proc项,你想让它真正的执行下去的话呢,你可以用OB等待一代等待,然后呢,最终呢,我可以用一个变量cost result去接收它的最终的返回值,接收我最终取的东西的返回值,那这个里面的返回值怎么返回呢?通过return查杀就可以。
28:49
将拿取的数据返回出去。将爬取的数据返回出去,通过这个return返回出去啊,所以说我们在这里面呢,是不是要去爬取想要的数据呢?那么我们爬取啊,这个呢,过程比较复杂,我们来写,那我们接下来的这个页面是不是要排去它们,那么我们就要去检查这个多结构啊,还是要去检查啊,放到下面去看。
29:17
好来看一下,我们就以第一个为例,只要第一个搞定了,后面的都不是事是不是好,那咱们呢,正常情况下呢,我们在这里面能获取到多姆操作的话呢,跟我们的这个穿送一样的,我们穿梭能做什么事呢?我那个。刚刚那个函回调函数中就能做什么事,好,那咱们呢,待会是不是要去获取动物啊啊,如果用原声的话呢,会稍微麻烦是不是?哎,那我们想一想在这里面可不可以用这呢。好,能不能用折扣是由谁决定的?你想我在这里能不能得到转化率,我能去设置吗?我设置不了是不是要看是不是页面上它有没有用啊,只要页面上用了,我是不是就能用语,如果页面上没用,我是不是用不了啊,哎,那我们怎么去验证一下页面上有没有用,这会呢,怎么验证?
30:12
哎,我打一下多乐福,哎,如果多乐福有,哎,是不是说明他用了相关的一些内容啊,我说。哎,是不是有个函数,有个加函数,好,光多德福可能还不够确定,因为多德福可能是记不错,可能是其他的一些函数库,可他可能也用多德福是不是,哎,咱们咱们用什么东西能够验证100%,是啊,这些大写的是不是,如果这个都有的话呢,说明他又没用啊,那就一定用了,回说是不是这个函数,哎,说明他是不是用这会,哎,既然用了会,那么我们是不是用这会和机器多么操作了,哎,那这样就方便的多了啊好,我们来操作一下检查。我们待会呢,就以正个为例,碟中点为例,我们去获取它想要的一些内容啊,首先呢,所有的这些列表呢,都在这个ul中,是不是我在U中,也就说待会呢,我要想办法获取到UR中的所有的LY,是不是那在这个LY上呢?通过它自定义的属性,你看其实我就已经拿到想要的东西了,可以拿到什么呢?来看啊,我会拿到。
31:17
什么东西,标题是不是这什么。评分是不是还有star啊,这个呢,就是它的这个star了,是不是这个呢,我们暂且不要,暂且不要,然后这个2018呢,是它的。上映时间,上映时间啊,然后这个duration呢,是他的这个电影的片长,是不是电影的总时长,然后这里是他上映的那个地址,在美国上映的是不是,然后呢,这里是他的director什么呢。导演director导演下面的actions才是我的演员主演,是不是啊,演员主演,然后这里还有一些其他的一些东西啊,好,那在这里其实我们就已经能获取到大连的东西了。
32:03
我们就能获取到。这些相应的数据了,是不是,哎到时候呢,我们就拿一拿啊,我们这里就就要这几个吧,因为这几个比较好拿啊,比方说这东东还有这个分数,还有这个这个聘尝是不是,哎这几个呢,我们拿到,然后还有是不是这个导演跟演员啊,哎在这里呢,拿起来都比较方便,是不是,那我们都在这拿啊,好,然后除了这个节目以外呢,我还有一个很关键的一个东西需要拿什么呢?什么东西?非常关键,这个东西要拿我这里面能拿到我所有的数据吗。拿不到啊,我要是不是要进入到这个网页上才能拿到啊,这个简介非常关键,我们是不是最起码你要有个简介啊,好,所以说我的简介呢,我在这里怎么去获取到这个简介呢。我就必须要先要拿到这个A标签对应的这个地址,是不是才能拿到啊,所以说我还必须要这个A标签对应的地址能拿到,那么我们就去写一写,写一写啊。
33:07
来吧,那我们去做的是首先呢,我先拿到这个。首先先获取到这个每个LY是不是好它呢,都在这个这个例子下面啊,都在这个例子下面,那我们来个多少号。写这个例子是不是,那下面的这个每个LY,是不是下面的每一个Li item是不是下面的每一个item,好,到目前为止呢,我是不是拿到所有的Li了,拿所有的了好。我们呢,再给他写一层,是不是这个东西啊,怕他出问题啊,再给他写一层。这样呢,就不容易出现小小问题,如果再出问题的话呢,把这个ID是不是加上啊,把这ID加上。啊,这样的话呢,我这个下面这东西就没有问题了,是不是好,现在呢,我来定一个变量去接收一下它这个呢,是我所有的例子。
34:04
它呢是个对象等于它。这里是获取到什么呢?获取到所有热门。电影的例子是不是?Li所获取的热门定的是不是,那么咱们需要几个的LY呢?是八个,所以说接下来是不是便利只取八个,想要办法爬取这八个数据啊好,我呢只取。八条数据只取八条。好,怎么直取八条呢,我呢这个这块呢,它是个尾数组是不是,那没办法,我只能用for循环去变列,把这个例子是放在这,放在这,然后在这里面呢,拿到每一个Li是不是到每个Li,那我就拿到呗。呃,这里面呢,我用let去定义,Let定义的话呢,它会有那个会计作用域,是不是有会计作用域,然后呢,再用Co去拿到想要的每个Li做了福Y等于我这个多乐福类下面的。
35:10
I是不是好这的每个LY呢,它呢这个LY呢,应该是个过对象吧,是不是。应该是个do啊。咱们的这个list里面是不是包含着很多个DOM对象啊,是不是,那么应该是个DOM对象,好拿到这个Li do,接下来呢,我是不是对这个do要进行操作啊,我这样你看是不是能通过这个do拿到我想要的一些内容,我想要的一些属性是不是好,那我就拿呗,我在最外层再定义几个数组啊,定几个数组。这几个数字,我们看一下哪几个数字呢,Cos一个。嗯,到时候一个电影条目信息,我到时候呢都把它返回出来,比如最终的一个结果result ET等于一个数组,待会呢,我就所有的信息呢,都添加到这个数组中可以吧,所有信息都添加到数组中啊,就最后的返回结果,所以说定义完之后呢,应该let啊,定义完之后呢,最终呢,我要返回的其实就是这个result是不是好,这个呢,是所有爬取的数据数组。
36:16
好,所以在这里面呢,我就要通过点push,是不是一个个去添加我想要的内容啊,一个个添加想要内容,首先第一个是电影的标题,是不是title,电影的标题怎么去获取到呢。怎么通过这个Li拿到这电影的标题?我现在需要定你的标题,大家告诉我怎么拿到。看下我怎么写啊,首先呢,因为我用原声动方式呢,可能诶我原声动怎么去拿这个自定义属性。好像不太合适啊,那我们将它包装一层,解扣对象可不可以?他现在是指扣对象了,指挥对象怎么拿到动物的一些自定义属性。
37:03
是不是要什么点。啊,应该是叫做吧,是不是是不是能够获取到你指定的一个属性啊,这个是自定义属性的获取方法。啊,那这里面呢,我要获取的是不是这个什么d title所在这里的传title,然后呢,我把这个title呢,用个变量去接收一下吧。是不是啊,这里呢,我都用好这个title,是不是最终我可以用对象的简写方式,是不是好title有了,然后还有电影的。平方是不是啊?平方是等于也是这个这样东东,但是他要的值呢,不是这个title头,他要的是一个score,是不是s Co sc电影个东西啊,那么多回下电影的片长。
38:06
好的呢,我用什么呢,看它用的是是不是这里呢,我们用啊运时差啊,然后呢,这里面呢,我们写一个什么duration啊。Du,好,那这里呢,就要好好的写了Du电影,然后还有什么要获取的。是不是导演导演。导演,导演呢,我们叫做是。Director好director,因为导演呢,可能有一个可能有多个,这个就不一定了啊好导演呢,比方就获取到这个是不是,克里斯托佛麦查麦奎是不是,然后呢啊好这个除了导演之外呢,是不是还有。主演啊,是不是应该是主演啊,主演我们叫什么名字吗?叫做。
39:04
同样的,它可能也有多个,那我们把它这个是不是act这些东西,除了这些东西以外,我还有什么东西要获取的?还有一个非常关键的东西,我需要拿到。电影的详情网址是不是详情页网址,详情页网址我这个呢,也需要到那这个还有一个东西拿一下吧,电影的。海报图是不是的海报图。这里都能拿到,那我就能拿到好详情页面的网址和义的海报图,那我们看下怎么获取啊,这里面可能就稍微麻烦一点,好呢,在我这个Li的里面是不是又有个U结构啊,好,第一个是poster,这里面呢,就会有我这个电影的详情页面,是不是这个网址,其次呢,这里面这个image呢,是不是我这个海报图啊,哎,都在这里面,所以说呢,我就可能获取到了,那么我们要获取到的时候呢,我首先要找到这个A标签是不是,那我们就得找。
40:09
怎么找呢?通过它是包装那个整合对象啊,怎么找到。点。他现现在我是这个东东啊,现在我来这里是不是我要往下找,是不是找他的子元素啊,子元素怎么找。还应该是children是不是L,是不是在这里面可以去传相应的标签啊,我们要找的是这个post是不是。找这个点下面的这个。A标签对不对,好,这里是不是拿到A标签了,那找到这个A标签之后呢,我要的A标签的是不是和属性啊,怎么拿到这个属性呢。点HT就是HT,咱们有那个at t这个属性,它能够获取到我这个想要的一些这个对象的想要的属性是不是就是at tr,那这里面呢,拿到就是我想要拿的就是。
41:09
它对应的是值是不是好这里的就是我的一个电影的网址,我叫做这叫可以吧,好这个电影网址也完了,接下来是不是定义海报图,它就相对于说简单一点啊,CTRLCTCTR1海报图呢,我就叫做image啊面一好image呢,它这里不是角A标签,是A标签下面的image,然后我要拿到image的是不是src属性啊src属性所以我这里改成。SC,好,到目前为止呢,我们就第一步的爬取工作呢,就把它给写的差不多了,是不是啊,这是仅仅是第一步,所以说最终的爬取完之后啊,这些东西你记得要把它给。返回出去才能接收到,是不是啊,一定要返回出去才行啊。
42:01
好,到这里呢,我们完成了第一步啊,第一步完成第一步,那我们呢,写了这么多啊,我们关键是要去测试一下到底好不好使,是不是我们先不看别的,我先看一下我写了这么多,你到底好不好使呢?是不是我在这里打一下result,我看下这个result的值最终能不能得到我想要的结果,是不是好,我们看一下啊,那我们是不是当前要想办法去调用这个函数啊,调用这个函数对不对,那我们呢,在这里面so里面呢,新建一个文件叫做index文件。或者是APP也行啊,它呢,就是我最终呢,要去调用的一个文件,比如我在这里一个啥啥,等于require啊,点斜杠下面的这个是不是是不是就是这个文件,好待会是不是调它,它是不是一个函数啊,所以说呢,我们。通常呢,这样调用的话呢,我们会这样写,因为里面都是的方法,我们包装pro函数,然后在这里面呢,用这个。
43:04
是不是等待等待啊,等待等待就可以了,因为呢,我们待会不止这个工作,还得做其他工作啊好,那我预习这个模块是不是就O了是吧。好,此时此刻来看啊,浏览器是不是把你打开了,把你已经打开了,然后我们是不是等待两秒啊,因为它加载需要时间的啊,好,数据已经返回给我了,是不是,哎,咱们这网速还是挺快的,是不是还挺快的啊好,咱们呢,刚刚限制的是所有的,所以说他把所有数据是不是都给盘下来了,那咱们只需要其中的八条,该怎么办呢?是不是都有title writing run time director是不是都有啊?诶当时有几个东西没有?什么东西没有呢?有几个没有爬取下来,是我这个。是不是这两个动作啊,说明咱们这两个标题可能写错了,待会再来看啊,那在这里呢,我们只要八条信息的话呢,我们把这个论S就不是这个了,这写为八条,是不是写为八好,那这里我们是不是发现这两个东西没找到啊,没找到的话呢,那说明我们这里出了问题,那我就得再再看看怎么写啊,这里不是出水,那应该是什么呢?
44:14
难道是find吗?是不是有find这个东西的方法?有没用过?啊,应该是看下这个泛的方法,诶这是什么取消关掉啊泛的方法,好的方法呢,他也能去找我这个后代啊,看一下行不行。我那再预习一次,让一下。他呢也会帮我把这个一界面,你看是不是打开啊,然后是不是跳转到我指定的网址,那就是这样,然后呢,最终呢,这些我都无所谓,诶现在是不是好了,现在呢,咱们这东西就都有了啊,都有了半种办法呢,是找握的子元素啊啊子元素找到后代元素,现在是不是所有数据都来了,都来了就好办了,那后面就好办了,是不是好这样呢,是咱们的第一步,第一步啊。
我来说两句