使用CSS或XPath选择器解析HTML?

我的目标是使用lxml解析 HTML,它支持XPath和CSS选择器.

我可以将我的模型属性绑定到CSS或XPath,但我不确定哪一个是最好的,例如更改HTML布局时更简洁,表达更简单,提取速度更快.

在这种情况下你会选择什么?

解决方法

你觉得哪个更舒服?大多数人倾向于更容易找到CSS选择器,如果其他人会维护你的工作,你应该考虑到这一点.这样做的一个原因可能是,对 XML命名空间的担忧较少,这是许多错误的根源. CSS选择器往往比同等的XPath更紧凑,但只有你可以决定是否相关因素.我会注意到,jquery的选择语言是在CSS选择器上建模而不是在XPath上建模并不是偶然的.

另一方面,XPath是一种更具表现力的语言,适用于一般的DOM操作.例如,没有相当于“父”或“祖先”轴的CSS选择器,也没有办法在XPath中直接寻址等同于“text()”的文本节点.相比之下,我想不出任何可以在CSS选择器中表达但不在XPath中表达的DOM路径,尽管E [foo~ =“warning”]和E [lang | =“en”]在XPath中显然非常棘手.

什么CSS选择器确实XPath不是伪类,但如果你正在进行服务器端DOM操作,这些对你来说可能没用.

至于哪个导致提取速度更快,我不知道lxml,但我希望等效路径具有非常相似的性能特征.

相关文章

Css3如何实现鼠标移上变长特效?(图文+视频)
css3怎么实现鼠标悬停图片时缓慢变大效果?(图文+视频)
jquery如何实现点击网页回到顶部效果?(图文+视频)
css3边框阴影效果怎么做?(图文+视频)
css怎么实现圆角边框和圆形效果?(图文+视频教程)
Css3如何实现旋转移动动画特效