2013-03-12 67 views
0

我有以下的HTML和我試圖讓腳本節點的評論:Nokogiri查詢包含在JavaScript中的HTML註釋?

<html> 
    <head> 
     <script language="JavaScript" type="text/javascript"> 
      <!-- 
      url = 'http://someurl.com'; 
      --> 
     </script> 
    </head> 
</html> 

利用這一點,我拿到劇本的節點:

javascript_code = doc.xpath("/html/head/script") 

但是,加入comments() XPath的時候,它沒有返回值:

javascript_code = doc.xpath("/html/head/script/comment()") 

我不知道爲什麼,這是行不通的,現在看來似乎應該是簡單的。是否有可能獲得評論?

回答

2

如果您將文檔解析爲XML,它將找到該評論。但是,如果將它解析爲HTML,Nokogiri會將腳本標記的全部內容放入cdata部分。你可以解析出來。

require 'rubygems' 
require 'nokogiri' 

body = DATA.read 

doc = Nokogiri::XML(body) 
puts doc.search('/html/head/script/comment()').text.strip 
# puts "url = 'http://someurl.com';" 

doc = Nokogiri::HTML(body) 
puts doc.search('/html/head/script').text.strip 
# puts "<!--\n   url = 'http://someurl.com';\n   -->" 


__END__ 
<html> 
    <head> 
     <script language="JavaScript" type="text/javascript"> 
      <!-- 
      url = 'http://someurl.com'; 
      --> 
     </script> 
    </head> 
</html>