2013-12-18 19 views
1

中運行我已經創建了一個應用程序中的一類:引入nokogiri響應時應用

require 'nokogiri' 
require 'csv' 
require 'open-uri' 

    class Scraper 
     def self.test_method 
      url = "http://london.craigslist.co.uk/" 
      doc = Nokogiri::HTML(open(url)) 
      Rails.logger.debug doc.to_yaml 
     end 
    end 

當軌控制檯中調用這個:Scraper.test_method我得到一個空的節點緩存。但是,如果我直接在控制檯中運行方法的這些單獨行,則響應是具有完整節點緩存的有效Nokogiri::HTML::Document對象。

控制檯和應用程序有什麼不同?

--- !ruby/object:Nokogiri::HTML::Document 
decorators: 
node_cache: [] 
errors: 
- !ruby/exception:Nokogiri::XML::SyntaxError 
    message: | 
    Tag article invalid 
    domain: 5 
    code: 801 
    level: 2 
    file: /var/folders/lt/18lgdxts4052x8rf8xhf32v00000gn/T/open-uri20131218-62789-1tuxgqp 
    line: 50 
    str1: article 
    str2: 
    str3: 
    int1: 0 
    column: 28 
- !ruby/exception:Nokogiri::XML::SyntaxError 
    message: | 
    Tag section invalid 
    domain: 5 
    code: 801 
    level: 2 
    file: /var/folders/lt/18lgdxts4052x8rf8xhf32v00000gn/T/open-uri20131218-62789-1tuxgqp 
    line: 51 
    str1: section 
    str2: 
    str3: 
    int1: 0 
    column: 23 
- !ruby/exception:Nokogiri::XML::SyntaxError 
    message: | 
    Tag header invalid 
    domain: 5 
    code: 801 
    level: 2 
    file: /var/folders/lt/18lgdxts4052x8rf8xhf32v00000gn/T/open-uri20131218-62789-1tuxgqp 
    line: 161 
    str1: header 
    str2: 
    str3: 
    int1: 0 
    column: 36 
- !ruby/exception:Nokogiri::XML::SyntaxError 
    message: | 
    Tag footer invalid 
    domain: 5 
    code: 801 
    level: 2 
    file: /var/folders/lt/18lgdxts4052x8rf8xhf32v00000gn/T/open-uri20131218-62789-1tuxgqp 
    line: 678 
    str1: footer 
    str2: 
    str3: 
    int1: 0 
    column: 9 
+0

是你得到的整個Yaml文件,還是你剛纔包含錯誤? – matt

+0

我已經更新了這個問題......那正是我回來的。而在控制檯中運行單個行時,節點高速緩存已完成對象:數組內的Nokogiri :: XML對象。 – Richbits

回答

1

最後一行在Scraper#test_methodRails.logger線,這是返回nil,導致你的方法返回零。您需要在方法的末尾使用return doc(或只是doc),以便返回該結果。

+0

謝謝,解決了它。 – Richbits