我不需要抓取整个互联网,我只需要打开一些URL,提取其他URL,然后保存一些页面,以便以后可以在磁盘上浏览它们。什么库适合编程呢?
答案 0 :(得分:1)
机械化非常适合这类事情。
http://mechanize.rubyforge.org/mechanize/
特别是此页面将有所帮助:
http://mechanize.rubyforge.org/mechanize/GUIDE_rdoc.html
在幕后,Mechanize使用Nokogiri来解析文档。这是一个简单的版本,使用Open-URI和Nokogiri来读取页面,提取所有链接并编写HTML。
添加了示例:
require 'open-uri'
require 'nokogiri'
doc = Nokogiri::HTML(open('http://some.web.site'))
轻松访问链接。这使用CSS访问器:
hrefs = (doc/'a[href]').map{ |a| a['href'] }
这使用XPath做同样的事情:
hrefs = (doc/'//a[@href]').map{ |a| a['href'] }
保存内容很简单。创建一个文件,并要求Nokogiri将其吐出为HTML:
File.new('some_web_site.html', 'w') { |fo| fo.puts doc.to_html }