本人剛開始接觸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