2012-04-21 73 views
0

我正在使用Ruby和Nokogiri来解析HTML文档,并且我想选择所有与CSS类匹配的节点,我不提前知道这些,但具有display: none样式属性。如何在Nokogiri中找到ComputedStyle元素?

例子:

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

而在其他文件中它的定义:

.invisibleTopic { 
    display: none 
} 

我想和invisibleTopics内容通过其风格display: none选择的节点。有什么建议么?

+0

引入nokogiri不会看到它们,除非你能捕捉到HTML中的节点已经在页面经过了调整之后。在这种情况下,请查看[WATIR](http://watir.com/)项目和宝石。 – 2012-04-21 21:48:49

+0

不错的项目,但不幸的是,我不知道如何将它与nokogiri整合。感谢您的提示:-) – jaflutz 2012-04-21 22:43:37

+0

您可以通过提取由WATIR控制的浏览器呈现的HTML,并告诉Nokogiri解析该内容来整合它。此时,您将拥有最终的HTML,就像您使用浏览器查看页面一样。 – 2012-04-21 23:11:11

回答

2

引入nokogiri不计算样式。你需要一个浏览器。随着的Watir-webdriver的你会怎么做:

browser.ps.reject{|p| p.visible?} 
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 
+0

问题是我想弄清楚看不见的元素,但我不知道这个类的名字:-)谢谢! – jaflutz 2012-04-21 22:38:19

相关问题