2012-04-22 77 views

回答

5

您正在使用從文檔的示例代碼,沒有形式在谷歌搜索這個名字,嘗試「gbqf」,但它可能會根據地區不同,或各種設定不同。當您使用機械化使用「pp」在開發過程中打印元素時,可以看到您正在抓取和下一步要做什麼。

工作.RB樣品(來自http://mechanize.rubyforge.org/EXAMPLES_rdoc.html更新)通過查詢來獲取前10個結果。

require 'rubygems' 
require 'mechanize' 

a = Mechanize.new { |agent| 
    agent.user_agent_alias = 'Mac Safari' 
} 

a.get('http://google.com/') do |page| 
    search_result = page.form_with(:name => 'gbqf') do |search| 
    search.q = 'ruby mechanize' 
    end.submit 

    search_result.search(".//a[@class='l']").each_with_index.map do |link, i| 
    puts "#{i} #{link.content}" 
    end 
end 
+0

我有同樣的問題,我將這些代碼,並沒有給我任何錯誤。我怎樣才能打印出來,因爲什麼都沒發生? – zachdyer 2013-05-16 00:42:51

0

的錯誤意味着你正在呼籲的NilClass實例的方法q。如果page.form_with(:name => 'f')失敗,這會發生,因此google_form最終被nil

+0

問題是爲什麼'page.form_with(:name =>'f')'有時只會失敗,而不是所有的時間? – 2012-04-22 09:52:08

+1

@Bhushan - 檢查迴應。這可能是谷歌已經決定你濫用它,併發送驗證碼。 – pguardiario 2012-04-22 10:08:53