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