Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Rails ruby将如何在重定向后获取页面机械化_Ruby_Web Scraping_Mechanize Ruby - Fatal编程技术网

Rails ruby将如何在重定向后获取页面机械化

Rails ruby将如何在重定向后获取页面机械化,ruby,web-scraping,mechanize-ruby,Ruby,Web Scraping,Mechanize Ruby,我想收集制造商及其药品的详细信息 Mechanizegem在ryan的帮助下用于从html页面提取内容 我可以成功登录,但无法访问设计页面 到目前为止我已经试过了 require 'rubygems' require 'nokogiri' require 'open-uri' require 'mechanize' agent = Mechanize.new agent.user_agent = 'Individueller User-Agent' agent.user_agent_alias

我想收集制造商及其药品的详细信息

Mechanizegem在ryan的帮助下用于从html页面提取内容

我可以成功登录,但无法访问设计页面

到目前为止我已经试过了

require 'rubygems'
require 'nokogiri'
require 'open-uri'
require 'mechanize'
agent = Mechanize.new
agent.user_agent = 'Individueller User-Agent'
agent.user_agent_alias = 'Linux Mozilla'

agent.get("https://sso.mims.com/Account/SignIn") do |page|
  #login_page = a.click(page.link_with(:text => /Login/))
  # Submit the login form
  login_page = page.form_with(:action => '/') do |f|
    f.SignInEmailAddress = 'username of mims'
    f.SignInPassword = 'secret'
  end.click_button

  url = 'http://www.mims.com/India/Browse/Alphabet/A?cat=drug'
  page = agent.get url # here checking authentication if success then redirecting to destination
  p page
end
注意:我为您的测试共享了虚拟登录凭据

单击“公司浏览公司目录”链接后,页面重定向会显示“您正在重定向…”的flash消息,Mechanize gem会缓存此页面

问题:


1) 如何获取原始页面(重定向后)。

我发现MIMS站点自动提交表单并使用页面加载回调检查身份验证的问题案例。它不适用于machanize gem

解决方案 手动提交两次表单可以解决此问题。范例

url = 'http://www.mims.com/India/Browse/Alphabet/A?cat=drug'
page = agent.get url # here checking authentication if success then redirecting to destination
p page
page.form.submit
agent.page.form.submit