web-dev-qa-db-fra.com

Comment obtenir l'URL d'une redirection avec Python

En Python, j'utilise urllib2 pour ouvrir une URL. Cette URL redirige vers une autre URL, qui redirige vers une autre URL.

Je souhaite imprimer l'url après chaque redirection.

Par exemple

-> = redirige vers

A -> B -> C -> D

Je veux imprimer l'URL de B, C et D (A est déjà connu car c'est l'URL de départ).

31
Matthew H

La meilleure façon est probablement de sous-classer urllib2.HTTPRedirectHandler. Plongez dans Python chapitre sur les redirections peut être utile.

9
Wooble

Vous pouvez facilement obtenir D en demandant simplement l'URL actuelle.

req = urllib2.Request(starturl, datagen, headers)
res = urllib2.urlopen(req)
finalurl = res.geturl()

Pour gérer les redirections intermédiaires, vous devrez probablement créer votre propre ouvreur , en utilisant HTTPRedirectHandler qui enregistre les redirections.

45
chmullig

Pour Python 3, la solution avec urllib est beaucoup plus simple:

import urllib


def resolve(url):
    return urllib.request.urlopen(url).geturl()
0
jadelord