2012-04-21 74 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

相關問題