代码之家  ›  专栏  ›  技术社区  ›  ovolko

用css或xpath选择器解析HTML?

  •  4
  • ovolko  · 技术社区  · 14 年前

    我的目标是用lxml解析HTML,它同时支持xpath和css选择器。

    我可以将我的模型属性与css或xpath绑定起来,但我不确定哪一个最好,例如,当HTML布局发生更改时,不要那么紧张,表达式更简单,提取速度更快。

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

    1 回复  |  直到 14 年前
        1
  •  9
  •   Alohci    14 年前

    你更喜欢哪个?大多数人会发现CSS选择器更容易,如果其他人会维护您的工作,您应该考虑到这一点。其中一个原因可能是对XML名称空间的担心更少了,XML名称空间是许多bug的来源。CSS选择器往往比等价的xpath更紧凑,但只有您可以决定这是否是相关的因素。我会注意到,jquery的选择语言是在css选择器上而不是在xpath上建模的,这不是一个意外。

    另一方面,对于一般的DOM操作来说,xpath是一种更具表现力的语言。例如,没有与“parent”或“ancestor”轴等效的CSS选择器,也没有直接寻址xpath中与“text()”等效的文本节点的方法。相比之下,我想不出任何可以用css选择器而不是xpath来表示的dom路径,尽管e[foo~=“warning”]和e[lang=“en”]在xpath中明显比较复杂。

    CSS选择器所拥有的xpath并不是伪类,但是如果您正在进行服务器端的dom操作,这些类对您来说就不太可能有用了。

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