00:00
OK,同学们,那么接下来啊,我们要用这个叉帕继续去做一个数据采集,那我们采集啥呢?接下来我们采集点图片吧,是吧,我们写不到100行代码,能不能下很多很多页的图片呢?下很多很多图片对吧?来试试啊呃,这个网站我们打算使用叫站长素材的这么一个网站,这个网站呢,以后大家应该会用上一些哈,为什么呢?因为这里边有很多很多的,假如说简历模板呢,这有一些,这个网页模板呢,有PPT模板呐,等等等等都很多很多,包括PS一些这个模板也有哈。那这里边儿到底你看这里边将来我们会很多很多在线简历啊,PT模板,3D模型啊等等等等啊,都会有很多,所以说你要用上了啊,但是我们要干啥呢?我们要点一下这个高清图片啊,这个高清图片里边有很多图片人物啥的啊,图片景色呀什么什么都可以啊,我们下载啥呢?我们下载一个情侣图片吧,那随便找一个都可以的啊,问题不大。
01:00
我们要把这个情侣图片的前十页都给它下载下来,那我记得我我咱们之前写类似的需求呢,还是在哪儿啊,还是在这个肯德基呀,豆瓣电影等这种类似的东西去做的一件事,对吧?各位诶所以说那这个之前我们下载的时候是用的几步操作呢?那么接下来呢,我们先创建文件啊,先把这些步骤给它写上,写完之后呢,我们再一点点来聊。那给它改一下啊,然后这个叫站长素材,OK,那么站长素材我记得同学们哈,如果说你想要使用这种多少页啊,这种下载我们得使用一个小封装,那小封装里边的第一步代表的是啥呢?叫做请求对象的定制,对吧,各位那第二步是啥来着?啊,是不是要获取网页的源码啊?
02:00
那第三步呢,是不是要下载是不是这样的同学们OK啊,那么在这里边大家就要知道哈,你要下载的是需求,写上需求要下载的是前十页的这个图片啊,前十页图片,那么前十页这个图片,我们每一页的这个地址是不是应该都是不一样的。对吧,各位,所以在这里边我们来看一下啊,来看一下在哪儿呢,在这儿。啊,这是我们第一页的地址啊,那它是不是呢?我们得看一下啊,检查检查之后呢,刷新有可能有有很多网站呢,这个都不是啥呀,都不是这个地址啊,这正常来刷新一下来找它是不是呢?我们来看一下preview哈,Preview preview看向是为什么呢?这些图片都在这儿对吧?呃,我告诉告诉大家一下,这个可能点不了哈,点不了就点完之后它呢,没有什么反应,所以呢,注意啊,你不要单独的去看preview,它的这个结果是不是你要的一个页面,你还要可以结合response,那response我们把它打开,诶这里边有哈,什么欧洲浪漫情侣接吻图片,这里边有个A标签是吧?啊然后这里边这这了哈,还有一个啥呢,它下边有一个地址,妹纸,咱们之前讲EL的时候不讲过这妹纸的,对吧,我把这个地址复制一下,看是不是我们想要的那个图片复制一下,然。
03:32
然后紧接着打开个来粘贴一下啊来走,诶发现是对吧,诶是这个图片,所以说呢,我们就知道了啊,你只有通过preview和这个response这两个东西我们综合一下我们就知道了啊原来是啥呢。是这么回事儿是吧,是这么回事,也是这个地址,所以说现在啊,同学们,我先把第一页的地址给他拿到。啊,第一页的地址,那这是第一页,那我看第二页的地址是啥呢?来把它点一下,下一页来走那第二页,呃,我们来看一下,先观察一下地址栏,同学们啊,这个地址栏是不是加了一个下划线二啊,那我现在来检查一下,看它是不是我们想要的呢。
04:17
来刷新啊,发现他看proview好像跟刚才类似啊,海边嬉戏情侣,什么欧美公主抱情侣等等等等,Response,咱们再检查一下看是不是这样的啊,随便找点,假如说这个树林暧昧情侣图片,我们再把它复制一下。啊,复制一下,然后再给它粘贴到这个地址栏中,我走你。啊走你啊刷新啊刷新刷新。可能有点慢哈,这大家别着急啊,别着急,我们再找一个其他的啊,看这是不是因为它服务器响应的一个问题啊,哎,没有吗?哎,有了哈,有点慢。啊,这是树林,然后情侣OK,同学们,那这个接口我们也找到了,那也就是啥,加了一个下划线二吧,加了一个下划线二来走这是第二页,那我再看一下第三页是什么呢?同学们啊,再走那么点下一页点走,大家你看是不是变三了呀,所以说我们就分析啊啥呀,这个加了一个是不是配置就页码啊。
05:24
对吧,各位,那这个时候有同学可能就想那老师啊,我这里边儿如果给他改成一,你说会不会到第一页呢。我跟各位同学讲啊,其实这个呢是不确定的,这得看人家在写代码的时候,它的一个设置,而并不是说固定的某个某个啊好同学们走,我发现诶,它不是对吧,它不是,所以说在这里边呢,就是我们的要分析出来的哈,你的第一页的页码和其他的页码是不是不一样。能听明白不?各位哎,要注意啊,第一页的页码和其他页的页码的这个结构啊,它的地址是不一样的,所以说在这儿啊,在这儿我们要干啥呀?来开始写代码来好呃,那之前呢,我们下载前十页的数据呢,都是通过手动输入页码的,那我们也是一样的哈,来写上MY入口,来写上start下划线配置,等于int,是不是要强转一下对吧,要不我便利不了是吧?Input,然后来写上请输入起始页码,再来一个N的下划线配置,然后T,然后来写个input,写个啥呀,叫请输入结束页码,OK,那接下来我是不是要便利一下它同学们对不对?来for循环page in range,然后来写上啥呀,Start page and page要不要加一来着,要你不要不就。
06:58
到九了嘛,是吧,来打印一下配置。
07:01
我看一下这个结果是不是我们想要的,走输入70页面10走,哎,是不是一到十了,OK,同学们,那么一到十之后,在这第一步我们要干啥来着。是不是要请求对象的定制啊,我把这拿过来,哎,叫啥呢,请求对象的定制。OK,那请求对象的定制我们在哪写呀?叫create_request啊,至于说这里边要不要传参数,我们暂时先不考虑,它用的时候我们再去传,为啥呢?因为这样的话有利于我们编程思维的一个培养啊,所以在这呢,我们定一个DeFine create_request哎,好,那在这里边干啥呢?我们要做请求对象定制。请求对象的定制里边注意啊,我们是不是要有个URL,但当我写到URL这三个字母的时候,我就发现了问题,发现啥问题了,因为你的第一页和其他页码不一样吧,对吧?各位,你的第一页和其他的页码不一样,所以呢,你在这儿是不是要判断一下啊,你判断一下你当前页是哪一页吧,对吧?各位,那页码这块是不是要需要传递过去给他,然后呢,他再接收一下啊,是这样的吧。
08:24
那你就判断一下子如果啊,大家注意,如果你要不需要判断页码在这也需要传,为啥呢?因为它需要这个值是吧?啊,所以在这我们就判断如果配置恒等于一了。咋的,那你的URL就等于谁,你的L是不是就等于它呀?哎,你的UR就等于它,这是你第一页的嘛,好,否则呢,同学们,否则你的URL就等于谁呀,是不是在这加了一个下划线。再加了一个页码啊,对吧,各位,哎,就加了一个页码,所以在这里边我们可以优化一下子啊,是谁是他是谁呢,把它复制一下。
09:09
到这儿。哎,加上一个什么,加上一个页吧,但是它是一个什么数,同学们是不是一个整数啊,所以在这我要强制类型转换一下,然后加上啥呀,点HTML,然后最后呢,我们来打印一下这个ul,看是不是前十页的这个月儿,先别着急往下写,我们得一步一步测,这样的话我们才能精准的定位到某一个bug来运行一下,走嗯,10走好同学们你看这就是我们前十页的数据,没有任何问题吧?啊,因为它这个有点慢啊,所以说我们暂时先不用去管它,我们的十页的地址全都有了,那既然它有了之后,同学们接下来我要做啥呀啊,接下来要做啥呀?
10:01
是不是来个hier啊哎,请对象地来个hier来hier,那接下来干什么?是不是request等于you are lab.request大的request呀,那那个东西它没有啊,我就要做啥呀,我就要导入一下吧,所以在这写上import your li.request它导完之后呢,在这写上UR地点request,点大的request,然后在里边写上URL等于URL head等于head,哎就这样就OK了啊,这样就OK了,所以这个就是请求对象的定制,那么这个请求对象定制之后啊,接下来我们要做啥呀?第二步来拿过来叫做获取网页的源码啊,获取网页源码来在这那咋获取网页源码,我起个名吧。叫get content啊,叫获取它的一个内容,那么get content你必须要,你得有个啥呢?有个函数啊,叫get_content那get content这里边我们都需要什么东西呢?大家注意啊,首先response等于your li.request.url open open里边的值是不是有需要我们传递的是啥呀?Request对吧?各位,那你要传request的话,你没有request呀。
11:23
你这块没有request,昨天我们怎么做来着,是不是它会返回一个request对吧,当它返回一个request之后,你是不是也可以在这儿接收啊。对吧,大家如果你接收完之后,此时的作用欲是不是就有了request啊,你就可以干啥呀,给他传递过去了啊,是这样的一个步骤啊,是这样一个步骤,当它由调用它的时候,这个这调用这个函数,这个函数呢会把这个request呢返回给它,这个request在这作用有了,它就可以在这去使用,而它又传递了哪传递了这啊是这样的一个层级关系啊,很多初级成员在这儿就容易搞混,但是你要注意啊,他就是像我们的击鼓传花一样。
12:14
他给他,他给他,他给他,最终到哪就完事了,最终呢,是不是就可以在这用了呀?OK,同学们,那么这个response对象有了,它有完之后,我是不是就可以获取它的内容了呢?点read.decode然后来写上一个utf杠八对吧?各位好,那这个内容获取完了,内容获取完之后,我是不是就该下载了呀?对吧,大家那下载的话,我应该咋写呢?来在这儿把这个说明我给它复制一下,给它粘贴到这里。下载叫当下限load,我也不知道需要啥参数,我先不写,所以在这里边啊,我们就写一个DeFine当下划线load,哎,Download要干啥呀,要下载,那下载的时候呢,我们需要做啥呀。
13:09
我们需要下载的东西又是啥?是不是下载图片呢,同学们?对吧,所以在这块我们要注意啊,我们要下载的这个注意要认真听啊,新的逻辑来了,要下载图片,你别给我下载页面去,我要下载的是图片。那整个页面中这个图片用哪来呀?这个图片图片刚才说了,它是不是一个地址啊。对吧,这个地址,然后这个还有一个什么alt是它的一个名,对吧,那同学们注意啊,下载的时候我们使用的这个函数啊,我们逆推一下啊。我们使用的这个函数叫啥呀?叫UR li.request.urltri吧,这个tri里边第一个我们要知道,叫图片地址,第二个我们要知道,它叫文件的名字,对吧?这我们在这个之前的案例中讲过啊,文文件的名字,那么这两个我们都没有啊。
14:16
这两个我们是不是都没有啊,图片的地址我知道在哪儿了,在这里边来。那么文件的名字呢,我们就可以用谁呢?用这out来做啊,用out来做,OK,那现在也就是说你现在如果给你网页源码了,你要做的是获取他们所有的啥。是不是获取所有图片地址。对吧,各位,所以说在这里边儿,你在这儿是需要网页源码的,为啥需要网页源码呢?因为我们需要使用到网页源码来获取到它的图片地址。能听懂吗?同学们,所以说在这里边儿呢,诶它也需要一个啥呢,返回值的。
15:04
啊,返回return content,哎,返回值,那既然这个函数有返回值了,那我就得收着呀,对吧,人情世故啊对吧,来收着收着它之后,他把这个网页源码给他传过去。传过去之后,我再来接收它,对吧,那此时它就是网页源码呢?那我问同学们,你通过网页源码去解析这个数据,我们用什么技术能实现来着?用什么,是不是用叉啊。对吧,是不是用叉pass,所以说在这里边大家要注意啊,大家要注意,此时我们就用到了之前的知识点和叉解析的这么一个联合。那在这呢,我们怎么做,首先得导入一下吧,在哪导入啊,在这导入咋导入来着,是不是from啥L叉l import e啊E,那么紧接着,因为我们这个是服务器响应的数据,所以说我们咋写呀,Tree等于e.HTML来干啥呀,来把它变成一个这个吹的对象。
16:20
然后紧接着我们是不是就可以通过啥呀,通过它来解析调用啥点叉pass来找到我们所有的这个图片的地址啊。然后找到之后,我再找到他的名字是不是就OK了呀。对吧,各位,哎,这就是我们接下来的需求,那接下来的需求大家你要知道哈,这个叉pass路径我应该怎么去写呢。对吧,我应该怎么去写呢?应该怎么去做呢?那大家来看哈,这里边此时啊,我又应该借鉴到小黑框了,那为啥要借鉴到小黑框呢?你想想,如果我在这里边啊,写一个差帕路径,我运行一次,写一次运行,写一次运行,那是不是就太麻烦了呀,所以说我们这道题的难点,既然它在路径的解析上我就用谁呀,我就用这个叉pass的一个插件就OK了,所以说这也是我们安装它的目的的所在。
17:24
那在这儿呢?同学们,我怎么去找他呢?然后你看这里边是不是都是div啊,这一条线呢,所以说我们知道哈,这每一个div,它里边都包含着啥呀,都包含着一个以image标签,每一个都是,那我们就找呗,找它I,一般情况下我们找ID呀,是不是ID下边的div下边的A下边的一倍值啊。对吧,ID为container的div下边的div下边的div下边的A下边的位置是不是可以啊,所以我们就找一找来看一下啊。
18:03
说来个杠杠div,哪个div多了去了?哪个div呀,我们写上艾特ID等于container。T是不是只有一个,大家看这里是不是只有一个它下边的A。它下边的A有子标签对吧,还有一个什么来着,子孙标签吧,我们写个杠杆A,再写个A下边的谁呀,下边的以妹子image之后,我们要image啥,我们是不是要image的src。对吧,同学们,所以在这我们写上盖艾特src,大家你看这个是不是地址我就都获取到了。哎,所以说就这么简单,这就是网络提取中非常重要的一个步骤啊,就是解析,当然解析并不难,那我还想要啥呀,我还想用这out呀,你图片保存的时候不得有个名吗?那你看是不是就来了,同学们,这个就是啥呀,这个就是我们的一个哎这个这个这个呃,叉pass一个解析路径,那我们要谁都行啊,来假如说要要这out吧,都可以啊,那假如说我在这写上一个它,那此时啊,同学们你要知道,要知道啥呢?现在应该是name下限list,因为名嘛,我来干啥呀,接下来我是不是可以遍历一下啊。
19:30
对吧,我是不是可以便利一下他这里边的数据啊。没问题吧,咋遍历呀,For name in name list,来打印一下name,看一下结果啊,看一下结果来右键运行它啊,起始页码一结束页码一走,就要第一个啊,就要第一页,其他先不管,哎,你看我们是不是拿到了呀,嗯,拿到了,呃,这里边应该是一共有40个,我们来看一下是不是40个在这呢,我们在print一下lengths,然后写上一个name list,看一下结果,再来运行走。
20:08
嗯,起始一结束一,嗯,好看一下是不是40个没问题吧,各位,那在这呢,我们还能干啥呀,是不是还可以获取他的这个什么图片呢。对不对呀,哎,还可以获取到图片,那咋获取图片呢。你看在这里边叫src下线list等于tree,点叉pass,然后在里边给它粘贴一下,把它改成S2C是不是就可以了。对吧,各位,但是在这儿啊,可能或多或少有点小问题,看啊print ls name list,然后再来LS,啥叫s RC list就打印俩嘛,俩的一个长度嘛,来右键运行它输入一啊,输入一走,为什么第二个是零了。
21:03
对吧,同学们注意啊,为什么第二个src的值是零,它不是40个。我们都知道啊,同学们,你这个名和它是不是应该是一一对应的,为啥?它此时变成了零。大家要注意啊,这里边儿这个网站一般涉及到图片的时候,我写注释。写注释一般涉及到涉及到啥呢?图片的网站都会进行懒加载,啥叫懒加载呢?假如说你这个网站啊,同学们,假如说你这个网站,你刚开始的时候一对页面全部展示。那么这样的话会导致你页面非常卡,所以它咋办的呢?同学们看啊,我刷新。
22:02
刷新之后呢,大家看这里啊,看这里div下边的div div下边A下边个1IMAGE纸,看到了吗?各位啊,盯着这里,哎,它为啥是1IMAGE纸这SRC2呢。哎,这是一个非常神奇的一件事,为你不是src吗?Out,我瞬时能获得着,那怎么SRC2的呢?就是因为它的底层做了一个懒加载,大家看啊,你看眼睛盯到这里边,我往下滑,什么时候它会变成src?就是当你的图片显示完之后,这个1SRC2就会自动的变成src,那同学们我划一下看啊看准这里啊,看准这里。滑滑滑滑改造了啊,滑滑注意看滑马上好是不是变成src了,但是啊,大家注意啊,虽然它变了,但是啊我们不能按照啥变之后的去获取这个数据,要干啥呢?要使用变之前的来获取数据,这是一个非常非常重要的知识点,以后我们在爬虫的时候,如果你要爬取的是某一个页面的图片,那么这个问题老生常谈啊,老生常谈,我们现在运行一下。
23:20
那写个一啊,再写一走,你发现全是事实了,没问题吧,各位,哎,这样的话,我们这两组数据才算真正的完事啊,真正的完事,那这两组数据有了,我是不是要将每一个啥呀。我是不是要将每一个的这个呃,图片都下载下来呀,咋下呢?那接下来我们还可以用凤音环啊,富循环写个啥呢?I in同学们,这里边如果要写个range,这里边写个啥呢?Ls name list,这是啥意思啊,我们通过下标来分别获取他们的数据,因为它是一对一对的嘛,对吧?我来先打印一下这个I呀,看一下这个I的结果是啥啊,如果有问题我们再调整一下,对吧?来走输入一多少一走是不是到39是零到39没问题吧,是不是正好是列表它的一个下标啊。
24:19
对吧,各位,所以说这个name应该等于name list的I。然后呢,这个src等于s r c list的I,然后紧接着在这打印一下name s RC,好,同学们,我们来运行一下。一到一,大家你看这回是不是一一对应上了呢?没问题吧,各位是不是一一对应上了呀?做沙滩椅的情侣图片,我们把这个图片前面没有H没有协议啊,我们看能不能在这儿展示一下走。可以吧,各位,哎,可以,那如果说在前面要加一个HTTP呢。
25:04
HTTP它其实给你加上了啊,HTTPS冒号斜线啊,没有斜线啊,粘贴走好是不是可以啊,所以说他给你提供这个地址,大家要注意前边是没有HTTPS和冒号的,那所以说你下载不了,你要干啥呀。啊,你要干啥?你是不是要拼一下子,大家你理解我意思吗?他给你提供的这个结果前边并没有HTTPS,少了协议,所以在这呢,我们一般是这么写的,Ul等于等于啥呢?HTPS冒号,再来加上src。那这样的话你的地址就完整了,来,我们再来打印一下name逗号URL。啊,你明白为啥之前不叫URL了吧,他这和这冲突是吧,好走你看这个地址点一下是不是就来了呀?诶这个才是真实的地址,那接下来我们就可以下载它了。
26:02
万事俱备,只下只差下载了吧,下载URL lib.request.url retrieve,那我们这里边参数是什么来着?同学们,那第一个是啥?是不是URL啊对吧?Ul等于啥呀?是不是等于URL,但是第二个参数同学们我们要注意了啊,第二个参数,那么第二个参数里边这个不都是名吗?对吧?各位那名的后边同学们请问要不要后缀呢?对吧,各位,所以说在这里边我们写上name,应该加上一个点勾PG吧,对吧,大家哎,那么先这样哈,我们先把它下载当前路径下一会儿呢,我们再把它下在某一个文件夹下,我们再来试试啊好同学们,那接下来我们就是见证奇迹的时刻,我们来运行一下,嗯,在这儿即使验为一。结束为一走,好,大家稍等一下,诶,下完了我看这里边有没有我们的数据啊,这一共是40条,来看东欧写真是吧,然后等等等等,哎,这就都OK了,这就是下载完的哈,下载完的数据你看是不是非常非常的快呀,那么同学老师啊,我感觉你现在这我看着不是很好,我不是很舒服,对吧?哎,我应该干啥呢?我应该把它下在某一个文件夹下,那在这儿呢,大家注意啊,我们创建一个新的directory,在这里边起个名吧,叫做呃,Love。
27:36
啊,Love imagelo image咋写的爱好,那我要干啥呢?我要把它放在这里边,怎么放呢?同学们,这个还是字串的一个拼接,假如说在这啊,我们这么写点杠,然后呢,写上love image在杠加上谁呀,它下边的,哎,把它下边放上一个这个图片就OK了,那么现在我们来运行一下啊,来走。
28:08
啊,第一页一直到第十页,好,我们来回个车在这儿呢,同学们我们稍作等待啊,稍作等待,因为十页一共是400张图片,那400张图片我们下载还是需要一点点时间的啊,需要一点点时间的,当然这个应该如果网速好的话,它也问题不大,同学们要注意啊,就是以后呢,如果说像类似的下载我们都可以使用这种逻辑,那么大家以后啊,你就可以干啥呀,改改这个地址啊,对吧,然后改改这个叉pass的解析路径啊,我们就都OK了啊,我们都OK了。我们看一下啊,这里边先下没下载成功啊,这可能东西有点多,所以说呢,它的下载还需要一点点时间,我们下完了来大家来看一下看啊OK了,那接下来啊,这四四百张图片就直接到我们那啥了,到我们这里了,你看啊,是不是400张图片呢。
29:01
OK,很帅对不对,诶这里边都有啊,好好同学们,那我把这个啥,把这个上面这图片就给它删掉吧,不留了啊,因为到时候给大家传代码的时候可能东西会多一点,所以说呢,我就把它全部都删掉了,以后咱们在做类似的需求的时候都可以这么去干,好同学们,那么以上呢,就是我们站长素材的一个扒曲啊,OK,我把视频暂停一下。
我来说两句