我想在ruby中开发一个“页面下载器” - 给定一个url,将下载html,相关的css,imagefiles和javascripts,然后更改html以引用本地副本而不是远程那些。就像有些浏览器使用“另存为完整页面”选项一样。
我在考虑使用Nokogiri进行页面的初始解析。但我不确定这是这项工作的最佳工具:
有没有宝石可以做我想要的?
答案 0 :(得分:1)
不,Nokogiri不了解外部依赖关系。你可以这样做:
js_urls = doc.xpath('//script/@src').map(&:content)
css_urls = doc.xpath('//link/@href').map(&:content)
img_urls = doc.xpath('//img/@src').map(&:content)
......但是找不到:
var img = new Image; img.src="...";
@import url(foo.css);
#nav { background:url(/images/navhead.png) }
此外,您将获得的所有网址都可能与当前网址相关,因此您需要resolve relative URLs。
不,Nokogiri是一个X / HTML DOM库(站在libxml2之上)。它不解析JavaScript,它不执行JavaScript,它不解析CSS,也不能将CSS应用于页面。它不是网络浏览器。
答案 1 :(得分:0)
似乎我想要的还没有实现。 Nokogiri可以用来解析html,还有其他宝石可以解析CSS(即css_parser),但我个人没有使用它们,他们可能会遇到现代css(媒体查询,导入等)的问题)。