5

我需要从网站中解析出一个数组。我要解析的 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]

有没有一种简单的方法来解析所有变量?

4

2 回答 2

2

如果我没看错,您正在尝试解析 JavaScript 并使用您的图像 URL 获取 Ruby 数组,是吗?

Nokogiri 只解析 HTML/XML,所以你需要一个不同的库;粗略搜索会找到 RKelly库,该库具有一个parse函数,该函数接受一个 JavaScript 字符串并返回一个解析树。

一旦有了解析树,您将需要遍历它并按名称(例如_arPic)找到感兴趣的节点,然后在分配的另一侧获取字符串内容。

或者,如果它不必太健壮(它不会),如果可能的话,你可以只使用正则表达式来搜索 JavaScript:

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

可能是一个很好的入门正则表达式。

于 2013-01-22T15:36:11.540 回答
0

简单的方法:

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

可以缩短为:

_arPic = URI.extract product_page.at("div#main_column script").text
于 2013-01-23T01:36:08.033 回答