【问题标题】:How to parse JavaScript using Nokogiri and Ruby如何使用 Nokogiri 和 Ruby 解析 JavaScript
【发布时间】:2013-01-05 21:10:56
【问题描述】:

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


    【解决方案1】:

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

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

    一旦你有了一个解析树,你就需要遍历它并按名称找到感兴趣的节点(例如_arPic),然后在赋值的另一端获取字符串内容。

    或者,如果它不需要太健壮(它不会),您可以尽可能使用正则表达式来搜索 JavaScript:

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

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

    【讨论】:

      【解决方案2】:

      简单的方法:

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

      可以简写为:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-07-05
        • 2013-02-01
        • 2014-07-05
        • 2013-04-02
        • 2014-09-15
        • 2016-01-05
        • 2013-04-02
        • 2014-03-18
        相关资源
        最近更新 更多