Tag: 机械化

Ruby Mechanize登录无法正常工作

让我为我想要完成的事情奠定基础。 在我正在学习的物理课上,我的老师总是喜欢吹嘘自己在课堂上作弊是多么不可能,因为她的所有作业都是通过WebAssign完成的。 WebAssign的工作方式是:每个人都得到相同的问题,但问题中使用的数字是随机变量,因此每个学生都有不同的数字,因此答案不同。 因此,我一直在编写ruby脚本,只需输入您的具体数字即可解决问题。 我想使用mechanize自动化这个过程。 我之前已经使用过很多次机械,但是我无法登录网站。 我将提交表单并返回我刚刚访问的页面。 您可以在http://webassign.net上查看该网站的源代码,我也尝试使用http://webassign.net/login.html上的登录信息 ,但也没有运气。 让我用一些不能满足我想要的ruby代码来完成所有这些: require ‘rubygems’ require ‘mechanize’ agent = Mechanize.new page = agent.get(“http://www.webassign.net/login.html”) form = page.forms.last puts “Enter your username” form.WebAssignUsername = gets.chomp puts “Enter your password (Don’t worry, we don’t save this)” form.WebAssignPassword = gets.chomp form.WebAssignInstitution = “trinityvalley.tx” form.submit #=> Returns original page 如果有人真的有兴趣让这个工作,我会非常乐意给他们一个工作的用户名和密码。

Ruby / Mechanize“无法分配内存”。 擦除’agent.get’方法的实例化?

关于在Mechanize Ruby脚本中泄漏内存我有一点问题。 我“while循环”多个网页永远访问,每个循环的内存增加很多。 在分钟后创建了“未能分配内存”并使脚本退出。 事实上,即使我将结果分配给相同的“局部变量”甚至是“全局变量”,似乎agent.get方法agent.get实例化并保存结果。 所以我尝试在最后一次使用之后和重用相同名称变量之前为变量分配nil 。 但似乎以前的agent.get结果仍在内存中,并且真的不知道如何耗尽RAM以使我的脚本在下class后使用大致稳定的内存量? 这是两个代码的和平:( 保持“输入”键并看到Ruby分配的RAM增长) #!/usr/bin/env ruby require ‘mechanize’ agent = Mechanize.new agent.user_agent_alias = ‘Windows Mozilla’ GC.enable #puts GC.malloc_allocations while gets.chomp!=”stop” page = agent.get ‘http://www.nypost.com/’ puts “agent.object_id : “+agent.object_id.to_s puts “page.object_id : “+page.object_id.to_s page=nil puts “page.object_id : “+page.object_id.to_s page = agent.get ‘http://www.nypost.com/’ puts “page.object_id : “+page.object_id.to_s page=nil puts “page.object_id : […]

如何点击Mechanize和Nokogiri中的链接?

我正在使用Mechanize来抓取Google Wallet的订单数据。 我正在捕获第一页的所有数据,但是,我需要自动链接到后续页面以获取更多信息。 #purchaseOrderPager-pagerNextButton将移动到下一页,这样我就可以获取更多要捕获的记录。 元素看起来像这样。 我需要点击它继续前进。 但是,当我尝试以下操作时出现错误: next_page = @orders_page.search(“#purchaseOrderPager-pagerNextButton”) next_page.click 错误: undefined method `click’ for # (NoMethodError)

尝试使用ruby mechanize进行POST

我使用firefox插件LiveHTTPheaders捕获了登录HTTP头。 我发现了以下url和变量。 POST /login email=myemail%40gmail.com&password=something&remember=1&loginSubmit=Login 这是我正在运行的代码: require ‘rubygems’ require ‘mechanize’ browser = Mechanize.new browser.post(‘http://www.mysite.com/login’, [ [“email”,”myemail%40gmail.com”], [“password”,”something”], [“remember”,”1″], [“loginSubmit”,”Login”], [“url”=>””] ] ) do |page| puts page.body end 但是,这没有给我什么! 我的post参数有问题吗?

如何打印出机械化存储的cookie?

我正在使用mechanize登录网站,然后检索一个页面。 我遇到了一些问题,我怀疑这是由于cookie中的一些值。 当Mechanize登录到网站时,我假设它存储了cookie。 如何通过Mechanize打印出存储在cookie中的所有数据?

如何为机械化forms添加新字段(ruby / mechanize)

有一个公共类方法可以向机械化表单添加字段 我试过了 .. #login_form.field.new(‘auth_login’,’Login’) #login_form.field.new(‘auth_login’,’Login’) 并且两个都给了我一个错误undefined method “new” for # (NoMethodError) 我尝试了login_form.field.new(‘auth_login’,’Login’)这给了我一个错误 mechanize-0.9.3/lib/www/mechanize/page.rb:13 n `meta’: undefined method `search’ for nil:NilClass (NoMethodError) 但在我提交表格的时候。 该字段在html源代码中不存在。 我想添加它,以便我的脚本发送的POST查询将包含auth_username=myusername&auth_password=mypassword&auth_login=Login到目前为止它只发送auth_username=radek&auth_password=mypassword ,这可能是我无法登录的原因。只是我的想法。 脚本看起来像 require ‘rubygems’ require ‘mechanize’ require ‘logger’ agent = WWW::Mechanize.new {|a| a.log = Logger.new(“loginYOTA.log”) } agent.follow_meta_refresh = true #Mechanize does not follow meta refreshes by default, we need to set […]

使用Ruby with Mechanize登录网站

我需要从网站上抓取数据,但首先需要登录。 我一直在使用hpricot成功地抓住其他网站,但我是新手使用机械化,我真的很困惑如何工作。 我看到这个例子通常被引用: require ‘rubygems’ require ‘mechanize’ a = Mechanize.new a.get(‘http://rubyforge.org/’) do |page| # Click the login link login_page = a.click(page.link_with(:text => /Log In/)) # Submit the login form my_page = login_page.form_with(:action => ‘/account/login.php’) do |f| f.form_loginname = ARGV[0] f.form_pw = ARGV[1] end.click_button my_page.links.each do |link| text = link.text.strip next unless text.length > 0 puts […]

如何阅读别人的论坛

我的朋友有一个论坛,里面有很多包含信息的post。 有时她想查看她论坛中的post,并得出结论。 目前,她通过点击她的论坛来评论post,并生成一个不一定准确的数据图片(在她的大脑中),她从中得出结论。 我今天的想法是,我可能会发出一个快速的Ruby脚本来解析必要的HTML,让她真正了解数据的含义。 我今天第一次使用Ruby的net / http库,我遇到了一个问题。 虽然我的浏览器没有查看我朋友的论坛,但似乎Net :: HTTP.new(“forumname.net”)方法产生以下错误: 无法建立连接,因为目标计算机主动拒绝它。 – 连接(2) 谷歌搜索这个错误,我已经知道它与MySQL(或类似的东西)有关,不希望像我这样的爱管闲事的人在那里远程探索:出于安全原因。 这对我来说很有意义,但它让我想知道:我的浏览器是如何在我朋友的论坛上找到的,但我的小Ruby脚本没有任何戳戳权利。 我的脚本是否有某种方式告诉服务器它不是威胁? 我只想要阅读权而不是写权利? 多谢你们, ž。

如何使用Mechanize / Nokogiri获取页面源

我使用Mechanize登录了一个网页/ servlet。 我有一个页面对象 jobShortListPg = agent.get(addressOfPage) 当我使用以下 puts jobShortListPg 我得到了我不想要的页面的“机械化”版本 # 如何获取页面的html源代码呢?

Ruby使用标题机械化post

我有js页面,通过XMLHttpRequest发布数据和服务器端脚本检查此标头,如何发送此标头? agent = WWW::Mechanize.new { |a| a.user_agent_alias = ‘Mac Safari’ a.log = Logger.new(‘./site.log’) } agent.post(‘http://site.com/board.php’, { ‘act’ => ‘_get_page’, “gid” => 1, ‘order’ => 0, ‘page’ => 2 } ) do |page| p page end