00:00
好,我们回忆一下上节课的内容啊,这个数我们已经基本玩明白了,怎么明白呢?哎,它可以有节点递归的嵌套,还有属性。问题就是这棵树怎么得到是吧,这棵树怎么得到,假如说啊,咱们现在。通过一个字符串能不能得到这棵树?用这个字符串去生成这个root,这个root生成了没有,生成了它是有标签的,有文本的,对吧?开始标签结束标签,封闭,文本属性为一个空字点。那么它也可以to string, 那这个其实就是通过一个字符串获得了一个。树的根结点。那我能不能通过这个更复杂一点的这个。字符串获得这个根节点呢,给他的这个字符串是一个很好的结构化的HM的原文件,我把这个原文件给他之后,然后让他设置这个缩进,然后他就可以把这棵树的形式给到我了,是吧?这等于是树就成了,如果这个原文件没有那么标准,它是什么样的?
01:08
他是。只有一个P元素,只有一个P元素,那它能生成这棵树吗?生成是可以生成,但是是一个P节点,并不是HL节点。嗯,或者说没有HM的这整体的框架,我们的框架P是在body里的,对吧?啊,Body head都是HLL元素,这是一个整体框架,但现在只有P那这个语句啊,拿过来我让它不是from string了,而是什么呢?而是HTML大写的。HTML这个时候他可以怎么样,它可以得到我们的这棵树,哎,我们再得到这棵树就怎么样,它就有HTML了。有这个框架了,为什么呢?因为原来这个东西呢,它是from string, 它不是针对HL的东西,现在呢,我针对HTML,把它生成这个HL的语法数,它就可以正常生成了,我们这个标签有点混乱,Title, 然后body,然后P。
02:08
然后一二三。这个基本上少标签,然后又整个结构也不合理,但是能不能正常生成呢?其实是能正常生成的,而且是结构清晰的一个HL,为什么会有这样的呃,生成方式呢?就是因为原来这个写HL他写的很乱,乱成一锅粥是吧?什么粥呢?标签周,那这标签周里面怎么才能把它理顺呢?就使用这个A苗的这个语法分析啊,把它语法分析出来,它就成了。但是不是肯定能分析成功呢?也不尽然。比如说像这种。这种情况。他是有title有P,但是呢,他就把这个P呀,应该放body里的P,放到这个title里面去了,这个就是没有成功是吧,哎,事事无绝对嘛,他实在太乱了,那太乱有没有办法呢?目前我们是没有办法的。
03:04
还有什么样的功能呢?比如说这个移除空格,标签之间的空格删除掉,但是标签里边的空格呢保留,就是说我们现在能够通过一个字符串。L的源代码得到这么一个数,然后我再通过数的方式去去去去去摘去呗,你的问题就是我怎么得到这个字符串呢?态,那首先呢,我们CTRL+4D,先把这个NGX跑起来,在之后的这么一个状态,那我把这个东西粘过来,这就是以前我们做的这件事儿。引入一个包,发送一个get请求,得到一个响应,哎,得到一个响应,那这个响应是什么呢?就是这个response response有什么呀,有text的。这个就是它的原文件,那我把这个原文件接到那个HTML解析器里不就成了吗?对不对,哎,那我们来把这个事儿完成一下。确实是接到这个HTML解析器,但是呢好像没有层级结构,为什么呢?因为这个indent缩进有点问题,我把这个缩进设置好了之后,我们再看它的这个层级结构是非常清晰的。
04:11
非常清晰的,既然有数了,我就按树的方式去玩,我把它遍历一遍,遍理一遍。你看它是不是变历出来了,A苗之后是head head之后是title。哎,然后是死掉,然后是body,这是怎么便利的呢?哎,它是迭代器,什么迭代啊,深度优先,先往深了扎根儿,那我呀只是想输出波的元素对应的分支儿行不行。我们把这个to string的方式。啊,把这个代码拿过来,然后。看一下body。那首先呢,是1TREE的tos string, 传给他的是哪个节点呢?是HLL的1号节点,0是headde 1是body,然后再让他输出,这不就得到了这个body里面的东西了嘛,对吧?哎,那我还想便利body里面的所有节点行不行呢?我们再往下找。
05:08
再往下找波在里面都有啥呀,深度优先的这种迭代。那如果我想筛出它里面的A元素呢,那我就在这这个特瑞ator里面迭代器的参数给它,呃,设置成A,然后再输出它的标签,得到俩标签是吧,得到俩A元素。那具体是哪俩A元素啊,我把这个。A的这个。这个tag不用输出了,输出什么呀,输出它的文本吧,是吧,输出的文本吧,这个时候我们可得到两个,一个是or蓝颜色的or RG, 还有一个蓝颜色的是点com是吧,它是这么这么两个这么两个东西,那我除了这个文本,我还想看什么,还想看属性。复制它。这回就输出多个东西啊啊,对于body里边的每一个A元素。
06:02
输出元素的标签、文本和属性。然后输出。啊,标签是A,文本是这个,属性是这个,哎,那属性我能不能给它,就是控制的更好一点儿啊,什么叫控制的更好一点,At DR r IB里边的什么呀,我说的是不是一般属性是h re e属性。行不行呢?我们再去输出,我们可以看到这两个超链鼠标放在这儿,出现在这个位置哈,它就对应什么,它就对应这个源代码里面的A元素的HRF属性,对吧?前面是K,后边是Y6,那这个Y6就是对应的这个,那这次呢,我们完成了整个的大对接,哎,首先是。发请求,接响应,Request负责的是什么呢?得到这个原文件,然后呢?呃,E负责的是什么呢?把它解析成一颗元素树。
07:03
然后再按元素数的方式去迭代啊,但元素数很大,我怎么才能捋出我想要的相应节点呢?我们下次再说哦,EZ教程。
我来说两句