在应用程序中运行时空节点缓存的 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

在 rails 控制台中调用它时: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

Scraper#test_method的最后一行是Rails.logger行,它返回 nil,导致您的方法返回 nil。 您需要在方法末尾使用 return doc(或仅使用 doc),以便返回该结果。

相关内容

  • 没有找到相关文章

最新更新