ruby解析网页
2014-08-22 14:36 ruby_pirate 阅读(1293) 评论(0) 收藏 举报本人刚开始接触ruby,对其能力尚处于探索阶段,今天工作恰巧需要用到ruby解析网页技术,经一番折腾,小有进步,记录下来以供参考。
ruby解析网页就本人目前所查而得至少两种办法,第一用”Net::HTTP”包是实现,第二用”open-uri“和”nokogiri“实现。
Net::HTTP
Net::HTTP提供很多方法读取url,本人接触时日尚短,详细内容可查阅ruby标准库Net::HTTP中api介绍。
其中很重要的一点是,如果只执行GET requests的话,可以简化使用open-uri包中的OpenURI函数.
代码示例:
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
示例来源
注:以上方法只是读入相关内容,而解析时需要使用正则表达式进行匹配分析。
Nokogiri
Nokogiri解析库据说比较快,而且可以通过Xpath和css方法解析,相对比较方便。但使用Nokogiri包首先需要安装其他依赖包,参见Nokogiri主页以及相应rubygem.
Nokogiri使用说明参考,其中介绍比较清晰。今天测试中发现,对于中文网页,有时需要对网页转码,否则可能出现错误,具体参见其他解决方案。
代码示例:
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
浙公网安备 33010602011771号