2010-04-11 53 views
4

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

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

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

回答

9

你更喜欢哪一种?大多数人倾向于更容易地找到CSS选择器,如果其他人会保持您的工作,您应该考虑到这一点。其中一个原因可能是不太担心XML命名空间,这是许多错误的根源。 CSS选择器往往比同等XPath更紧凑,但只有您可以决定这是否是相关因素。我会注意到,jquery的选择语言是在CSS选择器上建模的,而不是在XPath上建模的。

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

什么CSS选择器确实有XPath不是伪类,尽管如果你在做服务器端的DOM操作,这些对你来说不太可能是有用的。

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

+0

很好的回答。谢谢。 :) – rinogo 2011-08-10 17:45:44