ruby解析網頁

本人剛開始接觸ruby,對其能力尚處於探索階段,今天工做恰巧須要用到ruby解析網頁技術,經一番折騰,小有進步,記錄下來以供參考。css

ruby解析網頁就本人目前所查而得至少兩種辦法,第一用」Net::HTTP」包是實現,第二用」open-uri「」nokogiri「實現。html

Net::HTTP

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

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
相關文章
相關標籤/搜索