Password: 2) { submit(); } else { alert('Enter your Password.'); }">
使用所述资源的示例这是我认为应该工作但似乎不是:
require 'mechanize' @agent = Mechanize.new @agent.verify_mode = OpenSSL::SSL::VERIFY_NONE ##Login Page: page = @agent.get 'http://www.website_here.com/intranet/login.asp' ##Username Page: form = page.forms[0] form['USER NAME HERE'] = LoginUser ##Submit User: page = form.submit ##Password Page: form = page.forms[0] form['USER PASSWORD HERE'] = LoginPassword ##Submit Password: page = form.submit
当我测试我的代码时,我得到以下输出:
test.rb:10:in”:未初始化的常量LoginUser(NameError)
谁能指出我做错了什么?
谢谢
编辑3/27/15:
使用@seoyoochan资源我试图像这样形成我的代码:
require 'rubygems' require 'mechanize' login_page = agent.get "http://www.website_here.com/intranet/loginauthusr.asp?Page=" login_form = login_page.form_with(action: '/sessions') user_field = login_form.field_with(name: "session[user]") user.value = 'My User Name' login_form.submit
当我尝试运行我的代码时,我现在得到这个输出:
test.rb:4:在': undefined local variable or method 代理’for main:Object(NameError)
我需要一个关于如何分配我提供的表单将使用的正确名称/类的示例。
编辑4/4/15:
好的,现在使用@tylermauthe示例我正在尝试测试以下代码:
require 'mechanize' require 'io/console' agent = Mechanize.new page = agent.get('http://www.website_here.com/intranet/loginauthusr.asp?Page=') form = page.forms.find{|form| form.action.include?("loginauthpwd.asp?PassedURL=")} puts "Login:" form.login = gets.chomp page = agent.submit(form) pp page
现在我的想法是,这段代码应该允许我输入并提交我的用户名,将我带到我要求输入密码的下一页。 但是,当我尝试运行它并输入我的用户名时,我得到以下输出:
/var/lib/gems/1.9.1/gems/mechanize-2.7.3/lib/mechanize/form.rb:217:in method_missing': undefined method loginUser =’来自scraper.rb的#(NoMethodError):10:在”
我错过了什么或输错了什么? 请参阅我的第一个编辑,看看我的表单是如何编码的。 另外要明确我没有这样编码表单。 我只是想学习如何编码和抓取我的Dashing Dashboard项目所需的数据。
我能够通过以下示例登录。 感谢所有帮助我学习所有资源和示例的人!
require 'nokogiri' require 'mechanize' agent = Mechanize.new # Below opens URL requesting username and finds first field and fills in form then submits page. login = agent.get('http://www.website_here.com') login_form = login.forms.first username_field = login_form.field_with(:name => "user_session[username]") username_field = "YOUR USERNAME HERE" page = agent.submit login_form # Below opens URL requesting password and finds first field and fills in form then submits page. login = agent.get('http://www.website_here.com') login_form = login.forms.first password_field = login_form.field_with(:name => "user_session[password]") password_field = "YOUR PASSWORD HERE" page = agent.submit login_form # Below will print page showing information confirming that you have logged in. pp page
我从用户找到了以下示例:Senthess HERE 。 我仍然不是百分之百的所有个人代码正在做什么,所以如果有人想花时间把它分解,请这样做。 这将有助于我和其他人更好地理解。
谢谢!
不确定你是否找到了这些,但是Mechanize有相当优秀的文档: http : //docs.seattlerb.org/mechanize/GUIDE_rdoc.html
从这些开始,我在irb REPL中使用了这个简单的刮刀来登录GitHub : https : //gist.github.com/tylermauthe/781f68add24819e207c4
|