00:00
OK,同学们,那么接下来我们说啊,这个这个叉pass啊,它到底咋用对吧?啊,咋用在这里边呢?首先注意啊,同学们,如果我们要想用叉pass的话,首先你还需要安装一个库,这个库叫啥呢?叫做L叉ML啊,是这样的一个东西,那么我们应该把它安装在哪儿呢?对吧?我们应该把它安装在哪儿呢?大家看哈,你现在这个p charm的Python的路径在哪,你得知道一下,同学们看哈,在这边文件文件之后它有个什么settinging,对吧?这个setting里边啊,有这么一个东西,也就是说你当前这个叫project啊,当前这个项目的inter,它是一个解释器,这个东西的位置你要给它安在这里边。大家我再说一遍啊,再说一遍,说我们即将要安装安装一个库,即将我们要安装一个库,你把这个安装这个库里边儿,我问你这个项目是不是要去用。
01:09
对吧,你要用这个库,所以同学们你要知道你安装的位置是为了让你这个项目去用,所以你这个项目引用的这个解释器的路径,这里边儿就是你安装这个库的位置,OK吧,各位,那这个事儿我在哪儿啊,我在E盘的Python文件中对吧?E盘的Python文件中,那现在呢,我就干啥呀,找到我的E盘啊,找到E盘,E盘现在的C盘如何我们切换到E盘呢?点个E。冒号对吧?哎,就切换到E盘了,E盘其实里边有很多东西对吧,我们要把它安装在哪儿呢?是不是Python文件夹啊,所以在这里边怎么去观察这里边的文件夹呢?我们要打一个Di,诶,这里边有很多很多文件夹,对吧?而我们要把我们即将安装的这个库安到我们现在使用的环境中,那在这到Python呗,那怎么去进去呢?叫CD Python啊CD Python进到Python的文件夹下边,进来之后同学们注意啊,你别着急去安。
02:23
大家你要知道,我现在我们看一眼啊,它在E盘,E盘的Python啊,这里边儿,你裤兜在哪儿啊。大家注意啊,在你的scripts里边,这里边就是你所有的Python自带的库,明白吗?各位诶,Python自带的库,那么我要给它安在哪,是不是安在Python下边的啥scripts里边啊,咱们来找一下是不是在这啊。所以说我们cdscript,哎到哪啊,到这个文件夹下,我在这里边来安装我们的这个库叫L叉,那么我在咱们讲Python基础的前几个案例我们就说过了,那么本身呢,这些库都是在国外源,对吧?各位,那如果说你想让它下载的很快的话,我是不是就可以使用国内源呢?当时给大家举了好多例子,什么这个豆瓣园,阿里云等等等等,是不是都可以啊,那么现在我们就安装一下啊,这是我们安装的第一个库。
03:33
叫piip install,我们安装的这个东西叫L叉L安装叫L叉L,安装完之后说这个从国外源,如果你的网速很好,你直接回车就完事了,但是有的同学说老师我性格比较急对吧,性格比较急,我现在就想快点安,那咋整,我们就可以使用国内源杠IHTTPS。冒号斜线piy PI,点豆瓣点com,杠simple对吧?哎,简单的一个去安装走你那同学们我们现在稍作等待,他就已经安完了,对吧,各位好,那么同学们这个安完之后啊,这个安完之后有的人老师我这安没安完呢,大家你看这里,看这里它是不是重新加载这个script的这个文件夹,然后导入到我们的排插中啊,诶是这样一个步骤,那到底有没有,我们怎么能证明呢?同学们注意啊,在这儿写上一个新的文件啊,新的文件。
04:37
好,这个给它改成哪呢?其实为什么呢?因为上一个案例我们没有写代码,没有写代码,所以我在这儿为了让视频和我的代码一一对应,所以说我给它改成对应的名字,那这个叫啥呢?叫做解析啊解析,解析讲的是叉pass的基本使用。
05:00
OK,我如何证明我这L叉已经安装完了,同学们注意啊,我要导一下它,导一下它导的是什么呢?叫做from l import e来from啊L叉L。好,Import,什么E税,OK,同学们我已经导完了,当他不报错的时候,同学们这证明你已经打完了,但是啊,我跟各位同学讲,如果说你安装成功了,但是你写完这句话,他还报错了,有两种情况,第一种情况就是你当前的解释器。这里边你按错位置了,它没有L叉L,所以他才报错的啊,你看我这是不是有啊,如果你这里边没有,那就证明你按错位置了啊,那同学老师啊,我这里边有,但是我也没好使,那就是为为啥呢?那这个时候你应该出去拜拜了,人品有问题咋整把它关掉重开就好了。
06:06
但是我告诉同学们啊,大部分的情况下,你安完之后就直接可以了啊,就直接可以了,OK啊,这是我们安装L叉L啊,希望同学们把它记下来,那么这个安装完之后万事俱备啊,同学们万事俱备,接下来我们就要干啥呀,撸代码了吧,那咱们同学啊,我跟大家讲啊说解析。你这个解析啊,这个叫做啥叉pass解析,有两种解析的文件啊,它解析有两种文件,第一种文件就是本地文件啊,本地文件啥叫本地文件呢?就是你的HTML和当前的这个东西在同一个目录下,我们叫做本地文件,或者说是啥在你电脑上的文件,哎,我们要解析本地文件,第二个文件我们叫做啥呀解析直接解析服务器响应文件。
07:02
啊,附近响应的数据就是什么同学们,就是我们的response.read.decode哎,在里边写上一个编码的一个格式,例如utf杠八,诶,你直接解应这数,解析这数据。那有学生问了老师啊,那这两种文件我将来用哪个居多呢?对吧?当然是这个呀,你没有必要把把你扒下的数据保存在本地,我再去做解析吧,有必要吗?是没有必要啊,所以说在这里边同学们要注意啊,下边这种情况是我们在实际的企业级开发中应用的比较多的一个地方,大家要注意。OK,那我这个东西应该咋解析呢?同学们,我们先讲啥呀?先讲解析本地文件,再讲解析服务器响应的数据啊,这样的话能保证同学们你这两个案例都能写上,然后将来适用于各种应用场景,OK吧,那么现在呢,我们先写一个啥呀?先写一个HTML文件。
08:09
哎,这面文件在里边写上呢,与之对应的名字啊,大家注意啊,与之对应的名字,这样的话就能保证啥你能看懂,也能找到你的文件,哎,在这写上HM,嗯,来走。在里边我们写点啥呢?随便写点啥吧,啊,假如u Li啊,下边有Li,有个Li Li,这Li里边现在我们写几个城市吧,假如说写谁呢?写北京对吧,哎,北京,然后接下来。LY上海再来LY深圳,再来一个武汉啊,这是咱们上卫五暂时是四个校区对吧?哎,我把这几个城市都给写上了,那我现在要做什么?同学们,那下边还有很多标签呢,对吧?那这里边还有个u Li啊,UI下边还有Li呀,对吧?那这里边还有什么像像这个这个这个辽宁大连。
09:12
对吧,再写一个锦州啊,再写一个沈阳,诶沈阳OK,就这几个,但是同学们你要知道哈,我现在要的不是这里边儿所有的数据,我要的是什么?我要的是这里边儿的部分数据,听懂了吗?我这个时候才用到了解析啊,同学们,而现在这个文件大家要知道它是不是一个本地文件呢。对吧,那么现在问题来了,我这个叉plus,我如何解析本地文件呢?对吧,在这里边注意啊,解析本地文件和服务器响应文件,它俩使用的不一样。那同学们看一下啊,如果解析的本地文件,我们使用的是什么?使用的是E锤点pass,如果解析的是服务器响应的文件,我们使用的是e.at gl,诶这个大家得知道,哎,我把它标识一下,如果是本地文件,我们是E锤点叉pass往后挪做一个一一对应,如果是服务器响应文件,那么我们是E锤点HTML,那HTL大框,当然这HTL是咋的大写的啊,大写的OK,那么现在我们要做的是什么?同学们是不是解析的本地文件,那你看这易锤是谁呀?是不是你刚才导进过来的,同学们没问没问题吧,所以说接下来我们如果要解析的是本地文件的话啊,本地文件的话我们怎么办啊,我们怎么写,说这个叫。
10:55
Tree随便起个名啊吹,一般情况下我们干活的时候都叫tree,等于啥呀,叫e tree点什么pass诶这里边来写什么呀,来写他的这个路径,那这个路径的名字是谁呢?是不是就是点HTML啊对吧,各位虽然有点长,但是我们可以接受对吧?那这玩意儿它有没有啊。
11:24
那队友没有来打印一下print tree来看一眼走,你发现,诶,怎么了,说没有一个匹配,大家注意啊,这是一个非常非常典型的一个小bug,啥意思啊,说开始和结束标签没匹配在哪呢?在Meta的第四行。第六个单词第八个的字母对吧?谁呀,哪来个MY它呀,大家注意啊,在这里边这个叉pass解析,严格遵守ATM规范,严格遵守啥意思?他必须得有结束标签,人家都一对一对的,凭啥你是单身狗啊对吧?你在这你得告诉我啊,我不结婚对吧?就随便写一个嘛,给他的结束标识,这样的话就证明啥呢?哎,我不需要我们的结束标签了,我就单标记标签了。
12:17
啊,注意啊,它所有的都一样,你只要碰到单不棱的它就不行,那同学们现在我们来运行一下走,你我们发现是不是可以了,各位哎,OK啊没问题。这就是我们解析啥呀,本地文件来写上,这叫叉pass来解析本地文件,那你说老师你这个也没有想呃达到我们的目的呀,对吧,也没有达到我们的目的啊,我只想要里边的部分数据呀,OK,同学们接下来就是啥呢?我们学习叉pass基本语法了,你当你把这些基本语法学完之后,那么我们就可以干啥了,获取里边的部分数据了。
13:04
OK吧,大家那在这里边我们先写一写它的基本语法,你现在本地文件我来了,你剩下的就写基本语法呗,诶而这个基本语法我们要使用的是谁?大家注意啊,注意接下来比较简单啊,是谁呢?通过这个tree点叉pass方法,这里边同学们你注意啊,这里边写的是啥呀?叫叉pass路径,哎插拔路径,我把它复制一下,给它放在这里边。如果这个路径写对了,你在页面中想要啥要啥?想要啥要啥,那么第一个同学们我们看啊,这里边儿是啥呢?嗯,叫杠杠和一个杠,那这个是啥意思啊,第一个叫查找子孙节点。这一个盖代表的是查找子节点,那么这句话是啥意思呢?说如果呀,你现在找到了谁?大家看,如果找到了胞弟标签,他儿子是谁呀?
14:13
他儿子是不是ul对不对啊,你这样看不明白吗?但是如果是后代,是不是ul和Li都来了呀?所以说第一个杠杠和杠的区别就在于,就在于如果你查找的是子孙节点无限嵌套,那么你就使用杠杠,如果你要查找它是子节点,那么你就写的是一个杠,OK吧,大家诶,所以在这块呢,是我们需要注意的一个地方啊,那咋写呢?这里边我们应该咋找呢?同学们注意啊,我们现在写第一个在哪,在这写这个我要查找谁呀,来写上查找。查找这个ul下面的Li啊u Li下边的Li在这里边要注意啊,我先把它注释一下,那先不要它ul下边的Li,那咋找啊,对吧?这个叉P路径我们应该咋找啊?前面给它个变量名介收一下,叫做Li小线list怎么找呢?大家注意啊,直接写个杠杠,我前边什么都不管,直接写杠杆啥ul。
15:28
Ul下边的谁?一个杠Li,明白吧,不管前面有谁啊,假如说我在这写个包底也行。包的包的下,正常来讲是不是应该是包的下边的u ly下边的LY,同学们,前面这两个我们暂时不做研究,我们先研究这个它的层次结构是包低下边的ul,下边的Li没问题吧,哎,我们这是可以获取到的呀,好,同学们,我们现在呀,来打印一下这个Li list来打印一下啊来右键运行走。
16:08
哎,有几个数据呢,123,我们记得应该是有一个属性叫做Les,大家记得吗?对吧,但是这个lengths咋用来着?来这个写上叫判断列表的长度啊,判断列表的长度怎么判断,大家注意啊,可以这么判断,直接print lesss里边写个谁Li list,这样的话我们就能判断这个列表的长度,我们看是不是四个来走你。是不是啊,没问题对吧,各位,哎,我就找到了,那同学们说如果呀,在这我要这么去写,我写一个Li一个盖,能不能找到,同学们可不可以来运行一下走,我发现找不到,为啥找不到啊,你这一个盖啊同学们,你代表的是他儿子吧。
17:05
你包底里边是包底里边有他儿子叫Li吗?这是他孙子对不对,这是他孙子,所以在这里边你要写个啥呀啊,是不是写两个干对吧,各位,所以在这我们运行一下,你发现就OK了,或者说你一层一层的去找,这也没问题啊,这也没问题,所以大家知道哈,这个杠和杠杠的区别就在于啥。一个是找他的子孙节点,一个是找他的子节点,OK吧,好,这是第一个啊,我们所谓的路径查询,那第二个呢,我们我把它叫做啥呀,叫做位词查询,啥意思呢?同学们要知道啊,这里边儿假如说我给这个Li啊,这北京啊,给他加1ID叫L1,上海呢,我也给他加个ID叫啥叫L2,那现在我有个需求啊,我的需求是啥呢?是这样的。
18:05
叫查找所有有ID的属性的Li标签,大家这个题能不能读懂啊?查找所有有ID的属性的Li标签。就是谁呀,是不是就前两个各位,那这个我们咋写呢?我们在这还是这么写,Li下线例子等于P点叉plus里边写的谁呀。啊,什么叫做有ID啊,那就是他有有ID属性呗。对不对呀,那这里边我们可以这么写杠杆ul前面都加杠杆啊,Ul下边的Li Li之后呢,它有个过滤条件吧,是不是有ID呀,咋判断ID同学们看,加一个中括号里边加一个艾特,加属性名啊,加属性名啥意思?加一个中括号里边来艾特,再加一个ID,这样的话就代表的是我要查找所有有ID属性的Li标签,没问题吧,各位,哎,这就是我们刚才所说的这样一个需求,那么现在我们来运行一下看可不可以啊,好两个。
19:24
对吧,两个有的老师啊,我这看着太痛苦了,我不爽咋办呢?我要看里边内容,我就先教大家一个东西啊,这个test他这个啥呢,它是获取标签中的内容的啊,获取标签中的内容也就是看内容嘛,来看一下走,你看是不是北京和上海,哎,所以说在这里边我们确实可以获取着啊,你这不很简单吗?对不对,好同学们,那我们再来一个。我们要干啥呢?我们接下来呀,要判断一下,就是查找。
20:03
找到所有别别找到所有了,找到ID为啥为L1的Li标签,ID为一的Li标签,那这咋找ID为LI1的就是谁呀?是不是就是北京对不对?所以在这边写上,哎,它list等于tree点叉pass里边写上杠杠u Li下边的Li,然后有个判断条件就是啥呀?艾特ID等于L1,有位老师我直接写L一行不行,我要不要加个引号啥的?对吧,我们来运行一下,再再看一下里边的内容啊,来运行一下,看这里边它会不会获取到呢?走。获取到了吗?没获取到有的人老师你这个难道不是L1吗。不是的,但为啥没好使呢?同学们注意啊,单引号里边我们如果想写字符串的话,里边是不是要写双引号啊,来写上,所以说必须写啊,看走你我们发现是不是获取着了,大家注意啊,需要同学们要注意引号的问题啊,注意引号的问题千万千万啊。
21:20
OK,那这个刚才说的是啥呢?说找到ID为L1的这个标签啊,这个标签好,那接下来我们再看一下还有啥说属性查询,啥叫属性查询?同学们注意啊,我在这儿再给他一个属性叫class class等于啥呢?等于C1啊,等于C,我现在要做的是查询到ID为L1的这个标签的class的属性值啊,我写上啊,省得大家听不懂来写上说我把这个先给它隐藏一下啊。
22:00
来查找到ID为L1的L1的Li标签。的class的属性值啊,查找到IDVL的L标签的class属性值,那我们的现在找到谁呀?我们是不是先得找到IDVL1的这个呀,对吧?那么Li等于tree点叉pass里边来写上写上啥呀,Ul下边的Li哪个Li我一堆对吧?哪个艾特ID等于要不要减加引号要加呀,它这个对象我是不是找到了。那么这个对象的啥属性?诶,直接写个干叫艾,还是以艾开头啥class就完事了啊就完事了,那么现在我们再来打印一下这个Li,看一眼,看能不能获取到C1呢?
23:03
走,我发现能不能获取到没问题吧,各位,哎,所以说这也是可以的,这是查找它的一个属性值,那同学们注意啊,当我们把叉帕的语句。学会了,那么你就可以在啥呀,在页面的源码中肆无忌惮的获取数据,你想要啥要啥无所谓,对吧,啥都可以,好同学们,我把这也注释一下,我们再看还有啥好玩的是吧?这里边接下来这几个啊,除了内容查询,刚才我们讲了像模糊查询呢,像逻辑运算呢,这个用的倒不多,但是呢,我们可以说一下啥叫模糊查询。来同学们你看啊,这里边啊,我再给他加D等于啥呢?等于C3,这里边再来个ID,等于C4啊C4我现在要查找的是ID里边包含L的这个L标签,大家能听懂我的意思吗?叫ID里边包含L的Li标签。
24:07
来写上。查询查询ID中包含Li的Li标签,哎,就包含,那这个包含同学们,那么它的英文是啥呢?是不是叫contents对吧?各位,诶,那所以说在这里边大家知道我如何去写这个它的语法,说实话他稍微的有点特别,也稍微的有点有点特殊,所以说在这里边我们要多写几遍它的语法啊,多几遍语法,那么在这来写上说Li_list等于啥呢?等于tree点叉pass里边讲杠杆u Li下边的LY,好,接下来来了说接下来我们有个限制啊,在这里边有个限制,啥限制呢?我们的这个函数叫做contains。
25:06
来contains里边有两个参数,第一个叫艾特ID,这个比较特殊啊,这个比较特殊,所以在里边写上艾特ID,哎,Sorry content。圆括号第一个叫做艾特ID,第二个是啥呀?你要判断包含的条件L。明白不?各位这是看一下Li标签哪些ID包含了L,是这样一个操作,那同学们我现在再来干啥呀?把它遍历一下,再看一下它的长度来走,你我发现诶有数据了吧,那这个数据是不是我们想要的呢?我们想要查询标签中的内容吧,对吧?所以在这里边我们写一个test。来运营它好OK吧,是不是北京上海,所以同学们注意啊,这就是一个contents啊,它这个其实在我们实际的爬虫中啊,它用的倒不是很多啊,倒不是很多,好,那接下来呢,我们再讲一个啊,讲一个啥叫做star with stars with这个单词啊,叫做以谁谁谁为开头,这个我们在讲字符串的时候是不是讲过呀?诶但是它的写法和之前稍微有点不一样,为什么呢?因为它中间加了一个中横线啊,加了一个中横线,OK,同学们,那这个应该怎么去用呢?其实和contains类似,我们写一个需求啊,啥需求呢?
26:34
还是查询ID的值,以谁呢?以Li开头的Li标签。啊Li标签。OK,那这个我们应该咋写?Li下限list等于垂点叉pass,杠杆u Li下边的Li有啥限制呢?这个叫stars,记住啊,同学们一定要有个S,没有S是不可以的,哎,它stars with,然后加一个圆括号,那这里面第一个啥呀,说是ID,然后第二个是以谁开头啊?L,我要不要内容啊,Test没问题吧?哎,这是test,我们看一下啊,到底是谁呀?好,是不是还是北京上海有的老师,那我C吧。
27:24
以C为开头的,那是不是深圳和武汉的对吧?各位你看我们很清晰的就能获取到里边的数据啊,就很简单,并不复杂啊,并不复杂,好同学们,这些东西就够我们这个用到爬虫中的插画语法了。但是下边呢,我又给大家扩展了两个内容,第一个就是啥呢?我们所谓的逻辑运算。这个逻辑学用的倒不是特别的多啊,第一个叫啥呢?叫和谁和谁,谁的值等于谁,和谁的值等于谁,但是这个其实我认为没有必要哈,原因是啥呢?你一个ID是不是可以搞定了。
28:02
对吧?我们其实很少在爬虫当中的时候用到所谓的这种逻辑运算,极特殊情况下可能会用到了,但非常少哈,我们来写一写吧。呃,接下来我们要做这样一件事哈,要查询一下。查询查询啥呢?ID为L1和谁呢?和这个class为C1的这个数据,那其实就他俩呗,它不能跨标签啊,它只能在自己标签里边用,所以说我认为它没有多大意思啊呃,Li下限list等于E。找点叉pass里边写啥呢?杠杠u Li,杠u Li,它下边有个条件,啥条件呢?就艾特ID等于谁。是不是等于L,并且大家注意啊,这个,并且它没有用我们所谓的逗号,而用and啊,加and and啥呀,At class。
29:07
等于啥?等于C1就OK了,那我也要一下里边的内容吧,那他是谁呀?是不是北京啊,来运行OK吧各位,哎,就没有多大意思啊,这个用的不是特别多,但极特殊情况下吧,我们可能会用一下啊,极特殊情况下可能会用一下OK,那么最后一个我们差帕语法的知识点,那这个是啥呢?叫做或哎谁或者谁对吧,那谁或者谁这里边我咋写呢?那也就是说用标签还是用属性对吧,我们得看一下来写上Li下限list等于。等于谁呀,这里边我们看一下啊,在这儿可以用啥呢?用这个属性。它的属性,或者它的这个属性抬头,但是我们哪有抬头啊,对吧,我们又哪有pro啊,这里边儿我们怎么去实现它呢?看。
30:03
说tree点儿叉past。来写个杠杠ul下边的Li我再用谁呀?再用它来做看看啊,说艾特ID等于L1或上。这货我们用的是啥呀?用的竖线吧,对吧,我再来一个艾特ID,等于L2下边的test来看一下来走,我们发现他报错了,对不起,我不支持属性这么写。听懂了吗?我不支持属性也是这么写,它是不可以的,而它要咋写呢?它针对的是什么?同学们注意,它针对的是标签,它不能ID又等于它,或者ID等于它不可以这样做,而他只能怎么样做。看这是为啥说它的写法没有意义呢?我要找到ul下边Li,它ID这一个值没问题吧,看没问题吧,那么接下来我的货应该在这写货上,你把前边的东西再来一遍,咋写呀,杠杠u Li下边的Li下边的谁。
31:18
艾特ID等于L2,然后再来个test,它是这么去写的,它不允许属性,那么去做啊,它只能通过啥呀,只能通过标签来操作这个货,而不允许属性,这是他一个挺坑的一个点啊,但说实话同学们你在练习的时候呢,呃,这两个案例可以稍微的少练一点啊,少少练一点以上呢,就是我们的叉pass语法,那么下节课呢,我们再去多多的练习一下,书写一下这些叉pass的一些案例,好,同学们,那接下来我把视频暂停一下。
我来说两句