Tag: 机械化

Ruby Mechanize:用户代理?

Mechanize中有多少个用户代理? 是否有任何方便的所有用户代理选项列表?

如何测试使用机械化的ruby应用程序

我写了一个小程序,它使用Mechanize来遍历一个站点。 我想为它编写测试,但不希望每次运行测试时它都会实际登录到站点。 我想嘲笑互联网,所以当它进入某个网站时,它只是返回存储的结果。 这是一个小例子,假装我的代码的目的是从谷歌主页上拉链接,所以我写了一个测试,以确保我的代码找到的第一个链接有文本“图像”。 我可能写这样的东西: require ‘rubygems’ require ‘mechanize’ require ‘test/unit’ def my_code_to_find_links google = WWW::Mechanize.new.get(‘http://www.google.com’) # … # some code to figure out which liks it wants # … google.links end class TestGoogle < Test::Unit::TestCase def test_first_link_is_images assert_equal 'Images' , my_code_to_find_links.first.text end end 如何模拟google.com以便我可以测试my_code_to_find_links而无需实际访问互联网的所有开销? 谢谢 – 乔什

使用Mechanize查找下一个输入元素?

使用Mechanize,是否可以在页面的HTML中找到一个短语,例如“email”,然后找到下一个<input* ,并填写该输入字段,只填写该字段?

未定义的方法’click’为nil:NilClass(Mechanize)

我正在使用Mechanize构建一个脚本来从网站上抓取数据。 该脚本应该点击“阅读传记”链接,然后在下一页抓取该成员的传记。 这是Rake文件中的脚本: require ‘mechanize’ require ‘date’ require ‘json’ task :testing2 do agent = Mechanize.new page = agent.get(“https://www.congress.gov/members”) page_links = page.links_with(href: %r{.*/member/\w+}) member_links = page_links[0…2] members = member_links.map do |link| member = link.click name = member.search(‘title’).text.split(‘|’)[0] institution = member.search(‘td~ td+ td’).text.split(‘:’)[0] dob = member.search(‘.birthdate’).text.strip[1..4] # Get bio bio_link = member.link_with(:text => ‘Read biography’).click bio = […]

如何用Ruby中的mechanize填写登录表单?

在我希望用Mechanize填写的表格下面; 已经尝试过常用的模型(例如: 使用Ruby和Mechanize来填写远程登录表单的谜团 ); 但没有成功。   Email*   Mot de passe*   Se souvenir     Mot de passe oublié ?         * Saisie obligatoire   在这里我的尝试 form = agent.page.parser.css(‘form’)[1] agent.page.forms[1][“login”] = “my_login” agent.page.forms[1][“password”] = “my_password” agent.page.forms[1].submit

用浏览器登录然后ruby / mechanize接管它?

这有可能吗? 我需要传递给机械化的东西? 我可以用什么url开始呢? 我无法管理(到目前为止)使用机械化登录到一个网站,所以我想我是否可以做这个小小的解决方法。 我相信我可以捕获所有的cookie和其他所有内容,然后将它传递给ruby / mechanize来完成剩下的工作…… 下面的截图是使用firebug进行的( Firebug记录POST或GET请求,响应头 ) 登录工作=只有一行 登录工作=只有一行http://sofzh.miximages.com/ruby/ofivo.png 和登录的html工作 User Name Password Save? 登录对我不起作用 登录对我不起作用http://sofzh.miximages.com/ruby/13zcqj6.png 这是HTML Members Login Username Password Forgot your password? 在这两种情况下,我的脚本几乎都是一样的。 require ‘rubygems’ require ‘mechanize’ #agent = WWW::Mechanize.new agent = WWW::Mechanize.new page = agent.get(“http://www.vbulletin.org/forum/index.php”) login_form = page.form_with(:action => ‘login.php?do=login’) puts login_form.fields.each { |f| puts “#{f.name} : #{f.value}” } […]

使用mechanize从HTML表中提取数据

首先,这是示例html表: Kangchenjunga 8,586m 28,169ft Nepal/India 1955; G. Band, J. Brown ARGV [0]将具有山的名称(第一个colomn),返回值应该是最后一列,即第一次爬山的人。 所以我需要检查整行第一列是否是ARGV [0],如果是,那么我应该返回没有日期的最后一列。 require ‘mechanize’ p=Mechanize.new.get(‘www.alpineascents.com/8000m-peaks.asp’).body if p.include?(”+ARGV[0]) puts ‘ok’ end 我有以下内容,如果我在html文档的正文中有ARGV [0],则打印“ok”。 如何搜索找到ARGV [0]的同一行的最后一列? 示例: GIVE THIS AS A PARAMETER SKIP THIS SKIP THIS SKIP THIS I WANT IT TO RETURN THIS 我是Ruby的新手

机械化和NTLM身份validation

以下代码生成401 => Net :: HTTPUnauthorized错误。 从日志中: response-header: x-powered-by => ASP.NET response-header: content-type => text/html response-header: www-authenticate => Negotiate, NTLM response-header: date => Mon, 02 Aug 2010 19:48:17 GMT response-header: server => Microsoft-IIS/6.0 response-header: content-length => 1539 status: 401 脚本如下: require ‘rubygems’ require ‘mechanize’ require ‘logger’ agent = WWW::Mechanize.new { |a| a.log = Logger.new(“mech.log”) } agent.user_agent_alias […]

使用Ruby和Mechanize填写远程登录表单的谜团

我正在尝试实现一个Ruby脚本,它将接收用户名和密码,然后继续在另一个网站上的登录表单上填写帐户详细信息,然后返回,然后按照链接并检索帐户历史记录。 为此,我使用的是Mechanize gem。 我一直关注这里的例子,但我似乎无法让它发挥作用。 我已经大大简化了这一点,试图让它在部分工作,但一个假设的简单填写forms正在阻碍我。 这是我的代码: # script gets called with a username and password for the site require ‘mechanize’ #create a mechanize instant agent = Mechanize.new agent.get(‘https://mysite/Login.aspx’) do |login_page| #fill in the login form on the login page loggedin_page = login_page.form_with(:id => ‘form1’) do |form| username_field = form.field_with(:id => ‘ContentPlaceHolder1_UserName’) username_field.value = ARGV[0] password_field […]

Mechanize的getaddrinfo错误

我写了一个脚本,它将遍历我们数据库中的所有客户,validation他们的网站URL是否有效,并尝试在他们的主页上找到一个推特链接。 我们有超过10,000个url需要validation。 如果validation了url的一小部分,我们就开始为每个url获取getaddrinfo错误。 以下是抓取单个url的代码副本: def scrape_url(url) url_found = false twitter_name = nil begin agent = Mechanize.new do |a| a.follow_meta_refresh = true end agent.get(normalize_url(url)) do |page| url_found = true twitter_name = find_twitter_name(page) end @err < e @err << "[#{@current_record}] ERROR (#{url}): " @err << e.message @err << "\n" end [url_found, twitter_name] end 注意:我还运行了此代码的一个版本,该代码创建了一个在所有对scrape_url的调用中共享的Mechanize实例。 它以完全相同的方式失败了。 当我在EC2上运行它时,它几乎完全通过1,000个url,然后为剩余的9,000+返回此错误: getaddrinfo: […]