如何在Nokogiri中找到ComputedStyle元素?

时间:2012-04-21 21:44:00

标签: css ruby nokogiri

我正在使用Ruby和Nokogiri来解析HTML文档,我想选择所有与CSS类匹配的节点,这些节点我事先并不知道,但具有display: none样式属性。

示例:

<html>
  <body>
    <p class="visibleTopics">Visible Topic Content</p>
    <p class="invisibleTopics">Invisible Topic Content</p>    
  </body
</html>

并在其他文件中定义:

.invisibleTopic {
    display: none
} 

我想按其样式invisibleTopics选择display: none内容的节点。有什么建议吗?

2 个答案:

答案 0 :(得分:2)

Nokogiri没有计算风格。你需要一个浏览器。使用Watir-Webdriver,您可以:

browser.ps.reject{|p| p.visible?}

答案 1 :(得分:0)

不要查找CSS属性,而是在标记内查找CSS类:

require 'nokogiri'

html = <<EOT
<html>
  <body>
    <p class="visibleTopics">Visible Topic Content</p>
    <p class="invisibleTopics">Invisible Topic Content</p>    
  </body
</html>
EOT

doc = Nokogiri::HTML(html)

doc.search('.invisibleTopics').each do |n|
  puts n.text
end

运行时输出:

Invisible Topic Content