今天工作犯了一个特别2的错误

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了今天工作犯了一个特别2的错误相关的知识,希望对你有一定的参考价值。

今天用python的lxml组件解析网页代码,需要找到特定区域的文本,lxml的etree有html方法可以将得到的html代码转换成树结构,然后用xpath寻找特定区域

当我找到这个区域,我需要得到该区域内的文本(在c#里面htmlnodeelement有个innertext的属性可以直接得到)而在lxml里面HTML方法返回的element对象没有这个方便的属性,只有个text属性是返回当前node自己的text并不包括他的subnode的text,当然lxml里有另外一种方法可以得到htmlelement,htmlelement可以通过text_content方法可以直接得到,但是那需要使用htmlparse来解析网页代码,我又懒得把解析那部分代码改掉,所以我决定自己写个递归函数(因为是树结构嘛),来得到我要的文本内容

def gettext(node):

    if len(node)==0:

        return node.text if node.text is not None else ""

    else:

        return node.text if node.text is not None else "" + "".join([gettext(x) for x in node])

这个函数看上去是那么的完美,结果却没有得到我想得到的结果,在经过我15分钟的辛勤debug之后,我发现我tm就是个sb,居然忘记在最后一行里面用括号括住node.text的部分,结果就是只有当node.text是none的时候才会递归

正确的最后一行应该是

       return (node.text if node.text is not None else "") + "".join([gettext(x) for x in node])

 

错误的原因可以归结为马虎(这个词在我童年的时候一次次刺痛了我,我长大才发现,这么马虎我居然是随我妈,我健全的长大真是个奇迹啊),也可以归结为我并不了解if else和+的运算优先级

以上是关于今天工作犯了一个特别2的错误的主要内容,如果未能解决你的问题,请参考以下文章

在错误的道路上停下来就是前进

今天是特别沮丧的一天

20211202 今天是一个特别又美好的日子,世界完全对称日

今天犯了个常识错误

用Excel使用VBA时显示运行错误5,错误调用参数,程序特别简单,如图,求问哪里出错了

工作总结+遇到的错误