2011-07-20 89 views
0

我想抓取一個網站。我能夠從該網站上獲取數據。我無法從刮除YAML文件是,我已經保存數據
我的代碼:
保存網站掃描的數據

require 'rubygems' 
require 'open-uri' 
require 'hpricot' 

article = [] 
    doc = open("http://www.cmegroup.com/trading/interest-rates/cleared-otc/irs.html"{|f| Hpricot(f) } 

     (doc/"/html/body/div/div/div/div/table/").each do |article| 
     puts "#{article.inner_html}" 
     end 

File.open('test.yaml', 'w') { |f| 
f <<article.to_yaml 
} 

回答

0

首先你缺少一個右括號爲open調用(一)右塊開始之前)。

當你補充說你會注意到你會得到一個NoMethodErrorundefined method 'to_yaml' for []:Array)。爲了解決這個問題,你需要require 'yaml',它爲Array類提供猴子補丁。之後你會注意到你的yaml文件是空的,因爲你從來沒有把任何東西放入article。這是一個固定版本:

require 'rubygems' 
require 'open-uri' 
require 'hpricot' 
require 'yaml' 

articles = [] 
url = "http://www.cmegroup.com/trading/interest-rates/cleared-otc/irs.html" 
doc = open(url) {|f| Hpricot(f) } 

    (doc/"/html/body/div/div/div/div/table/").each do |article| 
    articles << article.inner_html 
    end 

File.open('test.yaml', 'w') { |f| f << articles.to_yaml }