ruby nokogiri restclient用于刮取javascript变量

ruby nokogiri restclient用于刮取javascript变量,javascript,jquery,ruby,screen-scraping,nokogiri,Javascript,Jquery,Ruby,Screen Scraping,Nokogiri,我正在使用restclient和nokogiri解析一些html,这非常有效,但是有一条信息存储在js(jquery)变量中,我需要返回它,我不确定如何解析它。我可以使用Nokogiri解析javascript块,但我需要它的一个子集,它可能很简单,但我不知道如何做。我可能会对它进行正则化,但我假设有一种更简单的方法可以使用JS来请求它 @resource = RestClient.get 'http://example.com' doc = Nokogiri::HTML(@resource)

我正在使用restclient和nokogiri解析一些html,这非常有效,但是有一条信息存储在js(jquery)变量中,我需要返回它,我不确定如何解析它。我可以使用Nokogiri解析javascript块,但我需要它的一个子集,它可能很简单,但我不知道如何做。我可能会对它进行正则化,但我假设有一种更简单的方法可以使用JS来请求它

@resource = RestClient.get 'http://example.com'

doc = Nokogiri::HTML(@resource)

doc.css('script').each do |script|
    puts script.content
end
我想要得到的是:

        <script type="text/javascript">
            $(function(){
                //this is it
                $.Somenamespace.theCurrency = 'EUR';
                //a lot more stuff

$(函数(){
//就是这个
$.Somenamespace.theCurrency='EUR';
//更多的东西

不确定是否适合,但您可以按如下方式检索:

irb(主要):017:0>


不确定是否适合,但您可以按如下方式检索:

irb(主要):017:0>


Nokogiri是一个XML和HTML解析器。它不解析节点的CDATA或文本内容,但它可以为您提供内容,让您使用字符串解析或正则表达式获取所需的数据

对于Javascript,如果它嵌入到页面中,则可以获取父节点的
文本

js = doc.at('script').text
如果页面的
块中有通常的
标记。如果有多个脚本标记,则必须扩展访问器以检索正确的节点,然后继续处理

当脚本被动态加载时,它会变得更加令人兴奋,但是您仍然可以通过解析脚本的
src
参数中的URL来获取数据,然后检索它,并再次进行处理


有时Javascript嵌入到其他标记的链接中,但它只是前两种方法的另一种,用于获取脚本并对其进行处理。

Nokogiri是一种XML和HTML解析器。它不解析节点的CDATA或文本内容,但它可以提供内容,让您使用字符串解析或正则表达式获取所需的数据。

对于Javascript,如果它嵌入到页面中,则可以获取父节点的
文本

js = doc.at('script').text
如果页面的
块中有通常的
标记。如果有多个脚本标记,则必须扩展访问器以检索正确的节点,然后继续处理

当脚本被动态加载时,它会变得更加令人兴奋,但是您仍然可以通过解析脚本的
src
参数中的URL来获取数据,然后检索它,并再次进行处理

有时Javascript被嵌入到其他标记的链接中,但这只是前两种获取脚本并处理它的方法的另一种旋转

js = doc.at('script').text