ruby解析网页

来源:转载

本人刚开始接触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


分享给朋友:
您可能感兴趣的文章:
随机阅读: