nokogiri多个css课程

mas*_*ssa 11 html css xpath parsing nokogiri

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

例如,如何<p>在HTML文档中选择元素(假设它有两个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 ')]")

但没有成功.

提前致谢

mas*_*ssa 21

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

doc.xpath('//p[contains(@class, "class1") and contains(@class, "class2")]')
Run Code Online (Sandbox Code Playgroud)

它并不完美,因为如果<p>包含诸如class10和类之类的类class20将被选中,但是现在它足以满足我的需要.如果您有更多建议,欢迎他们!

更新

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

doc.css('p.class1.class2')
Run Code Online (Sandbox Code Playgroud)

感谢Aaron Patterson :-)

  • 对于其他人来说,当一个类只有数字(.2011)时,.css选择器不起作用.解析为css时,.2011是一个有效的类,你只需要这样做.\ 32 011 {}定义样式时. (2认同)