2019-05-07
2019-05-08 本文已影响0人
沙漏如心
2019-05-07随笔,今天又又又遇到了一个比较奇葩得问题。
是关于python得xpath工具lxml得。 众所周知lxml集成了xpath,于是成为了众多python爬虫无望而不利得超级利器!
而今天这个呢,就是一个lxml得一个bug! 如果不是亲自遇到了我都不会想到,lxml会出现这么个低级错误!
自己所写的使用lxml进行解析的代码上面呢,没啥好说的就是一个简单页面,解析,接下来,是重头戏!
这个是etree.HTML(str) 之后的页面内容! 这个是str的内容认真看,发现什么了没 ?
没错,两者不一样?
在这里,我特意将两个都拉出来作为对比可以看到, 经过lxml转化之后,页面,少了一部分!
而在查阅众多博客尝试众多方法之后,发现只有如下理论才是真正正确的,并且是可以解决这个问题的。
那就是 页面被 unicode 编码格式的 空格,给隔断了! 在这里,只需要 str.replace("\u0000","") 将这部分替换掉,就可以正常执行了,页面内容也不会缺失了!
另外还有一个小bug.
如图,这个xpath 是可以查询到数据的 而这个就查不到了众所周知,class 属性是一个 html 中 一个非全局唯一性的属性! 也就是说,这个可以出现多个,多次。 而 lxml 在是用class查询的时候,如果需要将他们全部class 属性都添加上去的话? 恐怕? 不太好吧!
这边呢,就是我在7号,写东西发现的全部的内容了!
欢迎各位大佬积极拍砖!