2012-03-02 83 views
0

我正在嘗試使用Mechanize Ruby登錄到網站。我已經看過這個網站上的每一個例子,但是一個紅寶石初學者,並且對我應該訪問哪個頁面感到困惑。使用Ruby進行登錄時遇到問題機械化

下面的代碼,我有:

require 'rubygems' 
    require 'logger' 
    require 'mechanize' 

    agent = Mechanize.new 
    home_page = agent.get('http://www.quora.com') 
    login_form = home_page.click.form('login') 

    # with email and password variables properly set 
    login_form.set_fields(:session_key => 'email', :session_password=> 'password') 
    return_page = agent.submit(login_form, login_form.buttons.first) 

但它返回以下錯誤:

forge.rb:7: undefined method `click' for #<Mechanize::Page:0x1018592b8> (NoMethodError) 

你怎麼能一個網頁背後峯看一個網頁是否包含一個形式?

另外,任何想法如何解決代碼?

+0

http://stackoverflow.com/questions/17471579/trying-to-login session_keysession_password領域-to-quora-using-mechanize此評論可能會告訴你爲什麼你的代碼不能正常工作 – 2013-11-21 11:44:40

回答

0

我認爲這應該工作:

require 'rubygems' 
require 'logger' 
require 'mechanize' 

agent = Mechanize.new 
home_page = agent.get('http://www.quora.com') 
login_form = home_page.forms.find { |form| form.fields.map(&:name).include? 'email' } 

login_form.set_values :email => 'email', :password => 'password' 
return_page = login_form.submit 

我沒有看到quora.com

+0

嗨。謝謝回答。我在倒數第二行中用set_fields替換了set_values,並且出現錯誤500 => Net :: HTTPInternalServerError(Mechanize :: ResponseCodeError)。這是服務器端,所以我嘗試用agent.user_agent明確設置useragent。還有什麼我可以嘗試嗎? – user1238490 2012-03-02 17:10:30

+0

另外,您是如何知道quora.com上沒有session_key和session_password字段的?你在哪裏可以檢查這個? – user1238490 2012-03-02 17:13:34