nokogiri多个css课程

时间:2009-11-19 06:37:07

标签: html css xpath parsing nokogiri

如何选择具有两个类的html元素?

例如,如何在HTML文档中选择元素<p>(假设它有两个css类)class='class1 class2'

我尝试使用以下内容:

  • doc.xpath("//p[@class~='class1 class2']")
  • doc.xpath("//p[@class~='class1']|[@class~='class2']")
  • doc.xpath("//p[@class~='class1',@class~='class2']")
  • doc.xpath("//p[contains(concat(' ', @class, ' '), ' class1 ') && contains(concat(' ',@class, ' '), ' class2 ')]")

但没有成功。

提前致谢

1 个答案:

答案 0 :(得分:17)

最后,我找到了使用nokogiri(libxml)搜索多个css类的正确方法:

doc.xpath('//p[contains(@class, "class1") and contains(@class, "class2")]')

这并不完美,因为如果<p>包含class10class20等类,则会选择该元素,但现在它足以满足我的需要。如果您有更多建议,欢迎他们!

更新

以下是仅使用css解决此问题的更好方法:

doc.css('p.class1.class2')

感谢Aaron Patterson: - )