2011-10-05 59 views
1

當我運行下面的腳本來檢索谷歌的第一頁結果未定義的方法'名稱「的零:NilClass(NoMethodError)運行時,腳本

#!/usr/bin/env ruby 
require 'rubygems' 
require 'nokogiri' 
require 'open-uri' 

    doc = Nokogiri::HTML(open('http://www.google.co.uk/search?q=stackoverflow'))   

    doc.css('div.vsc').each do |element| 
    puts element.at_css("h3.r a.l").content 
    end 

我得到一個undefined method內容」的零:NilClass( NoMethodError)`

我該如何解決這個問題?或者至少如何避免它執行時顯示?

+0

它的工作對我罰款。(登錄,博客,問題,提問,iPhone,招聘) –

+1

但方法來隱藏它要檢查,以確保你在非null的地方調用該方法,而不是假設'at_css'正在返回一些東西。 –

回答

1

由於戴夫牛頓在他的評論中已經指出,at_css("h3.r a.l")的結果是nil在你的情況。 NilClass和對象nil都沒有方法content

解決方法:

doc.css('div.vsc').each do |element| 
    next unless elem = element.at_css("h3.r a.l") 
    puts elem.content 
end 
相關問題