本人刚开始接触ruby,对其能力尚处于探索阶段,今天工做恰巧须要用到ruby解析网页技术,经一番折腾,小有进步,记录下来以供参考。css
ruby解析网页就本人目前所查而得至少两种办法,第一用”Net::HTTP”包是实现,第二用”open-uri“和”nokogiri“实现。html
Net::HTTP提供不少方法读取url,本人接触时日尚短,详细内容可查阅ruby标准库Net::HTTP中api介绍。node
其中很重要的一点是,若是只执行GET requests的话,能够简化使用open-uri包中的OpenURI函数.正则表达式
代码示例:api
require 'net/http' url = URI.parse('...') req = Net::HTTP::Get.new(url.to_s) res = Net::HTTP.start(url.host, url.port) {|http| http.request(req) } puts req
示例来源ruby
注:以上方法只是读入相关内容,而解析时须要使用正则表达式进行匹配分析。函数
Nokogiri解析库听说比较快,并且能够经过Xpath和css方法解析,相对比较方便。但使用Nokogiri包首先须要安装其余依赖包,参见Nokogiri主页以及相应rubygem.测试
Nokogiri使用说明参考,其中介绍比较清晰。今天测试中发现,对于中文网页,有时须要对网页转码,不然可能出现错误,具体参见其余解决方案。ui
代码示例:url
require 'open-uri' require 'nokogiri' html = '...' doc = Nokogiri::HTML(open(html).read) #doc.encoding = 'utf-8' doc.css('table a').each do |node| puts node.text end