思路:
这是一个树,可以类比数据结构中的二叉树。
二叉树有一个值(val),和不超过两个叶子节点
这个html树可能有多个值,id属性和 标签属性(div/p/h1这些),可能有多个节点
题目描述:
可能出现 div #one 这种复合的后代选择器
于是我想直接用python嵌套的字典来完成
一:节点的表示:每个节点用dict表示,每个节点的关键属性是,dict['idTag'] id ,dict['value'] 标签属性 ,dict['childNode'] //关键,是列表类型,列表里仍然储存着 节点(递归)
二:创建的罗技逻辑:
creat (root)函数:
为了实现它,首先定义了一个linePointet【int】,指向待处理的html的第几行
creat (root),可以把缓冲区(html字符串的第linePointer个)的节点,挂载在root下
因此首先需要创建一个最大的,把html当作跟放进去,下面的语句起到这个作用
htmlDom = dict()
htmlDom['leval']=0
htmlDom['value']=None
然后呢,就可以递归的创建了,逻辑是这样的:
循环 一直认为当前缓冲区的是 root的子节点{
把缓冲区的字符串处理成定义的标准类型
IF这个新的节点是root的跟{
1:把新节点(newNode)append到root的儿子列表里
2:调整下linePointer到下一个节点,注意,下一个可能是newNode的儿子,也可能是newNode的兄弟,也可能是是 newNode直接间接前驱,但是注意,只要 linePointer指的不是当前递归调用里的&#x