2013-01-22 338 views
4

我需要解析一個網站陣列。我要解析的JavaScript部分看起來是這樣的:紅寶石Nokogiri Javascript解析

_arPic[0] = "http://example.org/image1.jpg"; 
_arPic[1] = "http://example.org/image2.jpg"; 
_arPic[2] = "http://example.org/image3.jpg"; 
_arPic[3] = "http://example.org/image4.jpg"; 
_arPic[4] = "http://example.org/image5.jpg"; 
_arPic[5] = "http://example.org/image6.jpg"; 

我的東西得到整體的JavaScript這樣的:

product_page = Nokogiri::HTML(open(full_url))  
product_page.css("div#main_column script")[0] 

有一種簡單的方法來分析所有的變量?

回答

2

如果我正確讀了你,你正試圖解析JavaScript並獲得一個Ruby數組與圖像的URL是嗎?

Nokogiri只解析HTML/XML,所以你將需要一個不同的庫;粗略的搜索會調出RKelly庫,該庫有一個parse函數,該函數接受一個JavaScript字符串並返回一個解析樹。

一旦你有了一個分析樹,你需要遍歷它,並通過名稱找到感興趣的節點(例如_arPic),然後獲取賦值另一側的字符串內容。

或者,如果它沒有太強大的(和它不會),你可以使用正則表達式搜索的JavaScript如果可能的話:

/^\s*_arPic\[\d\] = "(.+)";$/ 

可能是一個很好的入門正則表達式。

0

簡單的方法:

_arPic = URI.extract product_page.css("div#main_column script")[0].text 

可縮短爲:

_arPic = URI.extract product_page.at("div#main_column script").text