如何使用Nokogiri和Ruby解析JavaScript

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]

有没有一种简单的方法来解析所有的变量?
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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接