什么是允许xpath访问的Ruby Web爬虫库以及相当于另存为网页的内容?

时间:2010-10-22 02:31:49

标签: ruby web-crawler

我不需要抓取整个互联网,我只需要打开一些URL,提取其他URL,然后保存一些页面,以便以后可以在磁盘上浏览它们。什么库适合编程呢?

1 个答案:

答案 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 }