2011-02-09 34 views
10

我正在Ruby中編寫測試代碼,並試圖解析網站的HTML源文件。它有一個JavaScript變量,我可以用它來比較它與其他值。例如:使用Ruby代碼解析Javascript

<script type="text/javascript" language="JavaScript"> 
    function GetParam(name) { 
    var req_var = { 
     a: 'xyz', 
     b: 'yy.com', 
     c: 'en', 
     d:0, 
     e: 'y' 
    }; 
    } 
</script> 

這裏我想從這個函數中提取變量req_var。有可能這樣做嗎?如果有的話,請幫助我嗎?

+0

你有使用了Nokogiri標籤,所以我不知道你的意思是「從這個函數中提取變量`req_var`」。你需要使用Nokogiri來尋找這個腳本塊的幫助嗎?你想從HTML獲得什麼,只是名爲`req_var`的變量文本?你想把它轉換成Ruby哈希? – Phrogz 2011-02-09 04:03:22

+0

我在相同的代碼中使用Nokogiri來做一些其他的HTML解析。所以,理想情況下,如果我可以使用Nokogiri,那會很棒。如果我可以將它轉換成紅寶石哈希,它會很棒。 – rubytester 2011-02-09 17:41:39

回答

4

你可以使用正則表達式解析出來是這樣的:

 
k = "function GetParam(name) { var req_var = { a: 'xyz' , b: 'yy.com' , c: 'en' , d:0 , e: 'y'}; }" 
variable = k.match(/var\s+req_var\s+=\s+(.*?);/m)[1] 
p variable 

=> "{ a: 'xyz' , b: 'yy.com' , c: 'en' , d:0 , e: 'y'}"