2009-08-29 9 views
0

En ruby, si vous utilisez mécaniser suivant 301/302 réoriente comme celui-ciComment obtenir le journal de redirection Mécaniser?

require 'mechanize' 

m = WWW::Mechanize.new 
m.get('http://google.com') 

comment obtenir la liste des pages mécaniser a été redirigée par? (Comme http://google.com =>http://www.google.com =>http://google.com.ua)

OK, voici le code à mécaniser responsable de la redirection

elsif res_klass <= Net::HTTPRedirection 
     return page unless follow_redirect? 
     log.info("follow redirect to: #{ response['Location'] }") if log 
     from_uri = page.uri 
     raise RedirectLimitReachedError.new(page, redirects) if redirects + 1 > redirection_limit 
     redirect_verb = options[:verb] == :head ? :head : :get 
     page = fetch_page( :uri => response['Location'].to_s, 
          :referer => page, 
          :params => [], 
          :verb => redirect_verb, 
          :redirects => redirects + 1 
         ) 
     @history.push(page, from_uri) 
     return page 

mais en essayant de m.history.map {| p | met p.uri} montre 3 fois la dernière page de uri ..

Répondre

0

Je ne suis pas certain, mais voici quelques choses à essayer:

  1. voir ce qui est dans m.history[i].uri après get ()

  2. Vous pourriez avoir besoin quelque chose comme:

 
    for m.redirection_limit in 0..99 
     begin 
     m.get(url) 
     break 
     rescue WWW::Mechanize::RedirectLimitReachedError 
      # code here could get control at 
      # intermediate redirection levels 
     end 
    end 
2

La clé est ici pour profiter de l'exploitation forestière dans Mechanize. Voici un exemple de code complet utilisant les fonctions de journalisation Rails intégrées.

require 'mécaniser'

require 'enregistreur'

mechanize_logger = Logger.new ('log/mechanize.log')

mechanize_logger.level = Logger :: INFO

url = 'http://google.com'

agent = Mécanisme.nouveau

agent.log = mechanize_logger

agent.get (url)

Et puis vérifiez la sortie du journal/mechanize.log dans votre répertoire de journal et vous verrez l'ensemble du processus de mécaniser y compris la urls intermédiaires.

Questions connexes