2012-03-02 82 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