如何使用Nokogiri和Ruby解析JavaScript

问题描述 投票:5回答:2

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

是否有一种简单的方法可以解析所有变量?

javascript ruby nokogiri
2个回答
2
投票

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

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
© www.soinside.com 2019 - 2024. All rights reserved.