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

ovo*_*lko 4 html css xpath parsing css-selectors

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

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

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

Alo*_*hci 9

你觉得哪个更舒服?大多数人倾向于更容易找到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,但我希望等效路径具有非常相似的性能特征.