2013-04-02 39 views
1

所以我有一個應用程序使用Mechanize來獲取頁面。請注意我試圖解析的HTTP站點是* .TXT文件。Heroku + Mechanize將OBJ轉換爲字符串

在IRB我運行一個簡單的程序,如:

require 'rubygems' 
require 'mechanize' 
require 'nokogiri' 

@agent = Mechanize.new{|agent| agent.user_agent = 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10.6; rv:9.0a2) Gecko/20111101 Firefox/9.0a2'} 

@agent.get(http://some_sort_of_text_file.txt) 

for line in @agent.page.content 
puts line 
end 

這運行良好,我得到的文本文件作爲輸出的每一行。

但是,當我把它推到Heroku的..我得到一個錯誤這樣的:

NoMethodError (undefined method `each' for #<String:0x00000003ebf200>): 

嗯...我發現了一些奇怪的原因,頁面變成了一個巨大的字符串的文件,這是我需要採取另一個步驟做一些節目,如:

@doc = @agent.page.content 
     @items =[] 
     start =0 
     @doc.gsub(/|/, " ") 
     @doc.gsub(/\\n/,"|") 
     counter=0 
     while counter <= @doc.length 
     if(@doc[counter]== "|") 
      @items << @doc[start..counter] 
      start=counter+1 
     end 
     counter = counter+1 
     end 

任何想法,爲什麼它需要在網站上Heroku的一個字符串,爲什麼我需要採取額外的步驟,只是每一行分解成一個數組?

任何幫助表示讚賞。

回答

1

當我在irb的本地計算機上運行代碼時,@agent.page.content是一個字符串。

如果你想要的是拿結果,把它變成一個數組,這將工作:

# (put this after @agent.get(http://some_sort_of_text_file.txt) 
lines = @agent.page.content.split("\n") 

# Now you can do something like this if you want 
lines.each do |line| 
    puts line 
end 
+0

這是個老凸出,我把它放在腦後。 Besdies每個頁面都是由不同的人制作的,所以格式很古怪,所以我只是放棄了。 –