我正在使用Mechanize来抓取需要登录的网站。以下代码将我登录。
require 'mechanize'
agent = Mechanize.new
agent.get 'http://www.specialsite.com'
agent.page.form.txtEmail = 'myemail@email.com'
agent.page.form.txtPassword = 'myPassword'
agent.page.form.add_field! "__EVENTTARGET","btnLogin"
agent.page.form.add_field! "__EVENTARGUMENT",""
agent.page.form.submit
agent.page.link_with(:text => "Special Link").click
agent.page.form.txtSearch = "Search Text"
agent.page.form.add_field! "__EVENTTARGET","lbtnSearch"
agent.page.form.add_field! "__EVENTARGUMENT",""
agent.page.form.submit
我的问题是,如何在ruby IRB中运行此代码,以便我可以访问它定义的对象,如'agent'来试验并生成我需要的其余代码?
我试过'加载'。它运行命令但不会使“代理”之类的对象可用。
答案 0 :(得分:3)
将这些东西原样写入文本文件中,打开IRB并输入:
File.open("your_file","r").readlines.each{|line| eval(line)}
这有帮助吗?
编辑:文本文件必须存在于您触发IRB的同一目录中。一般优势:在文本文件中修改某些东西比在巨大的IRB单行中进行修改更容易。
答案 1 :(得分:2)
使用pry:
require 'pry'
... your code
binding.pry
当您运行脚本时,它将停在binding.pry
并且您有一个类似irb的repl(但更好),您可以在其中评估对象。使用exit
继续或exit-program
退出。
答案 2 :(得分:0)
因为这是所有可重复的代码,你应该尽可能地尝试实现DRY(不要重复自己)。我会在一个类中完成所有这些并且有一个返回代理的方法。然后在irb中你需要该类并将你的irb变量设置为类getmethod。通过这种方式,您已经拥有了将用于项目lator的课程开始
答案 3 :(得分:0)