J'utilise la méthode urllib2.urlopen
pour ouvrir une URL et récupérer le balisage d'une page Web. Certains de ces sites me redirigent en utilisant les redirections 301/302. J'aimerais connaître l'URL finale à laquelle j'ai été redirigé. Comment puis-je l'obtenir?Comment puis-je obtenir l'URL de redirection finale lors de l'utilisation de urllib2.urlopen?
17
A
Répondre
31
Appelez la méthode .geturl()
de l'objet fichier renvoyé. Par la urllib2
docs:
geturl()
- renvoyer l'URL de la ressource extraite, utilisée pour déterminer si une redirection a été suivie
Exemple:
import urllib2
response = urllib2.urlopen('http://tinyurl.com/5b2su2')
response.geturl() # 'http://stackoverflow.com/'
4
La valeur de retour de urllib2.urlopen
a une méthode geturl()
qui devrait renvoyer l'URL actuelle (c'est-à-dire la dernière redirection).
0
Vous pouvez utiliser HttpLib2
avec follow_all_redirects = True
et obtenir le content-location
à partir des en-têtes de réponse. Voir my answer to 'httplib is not getting all the redirect codes' pour un exemple.
1
.: par exemple urllib2.urlopen('ORIGINAL LINK').geturl()
urllib2.urlopen(urllib2.Request('ORIGINAL LINK')).geturl()
comment gérer quand il y a plusieurs urls intermédiaires et je veux URL finale? Cela ne fonctionne pas pour ce cas. – Kishan