Est-il un moyen facile de demander une URL en python et ne PAS suivre les redirections?
Regardant le source de urllib2, il ressemble à la meilleure façon de le faire serait de la sous-classe HTTPRedirectHandler et ensuite utiliser build_opener pour remplacer la valeur par défaut HTTPRedirectHandler, mais il semble que beaucoup de (relativement compliqué) travail à faire ce qui semble comme il devrait être assez simple.
- Pour les googlers: à l'aide de la demande de la bibliothèque vous permettra d'économiser beaucoup de maux de tête: docs.python-requests.org et de voir de Marian réponse ci-dessous, il est très élégant.
- Je suis d'accord que les demandes est le chemin à parcourir ces jours-ci. J'ai upvoted de ce commentaire et de Marian répondre, mais je pars de la réponse tel qu'attribué, car il était le meilleur à l'époque.
- prix sont bons, mais le temps passe et que c'est une communauté édité site. L'accent est mis sur les bonnes réponses, et non sur les personnes. Il gardera son upvote points. Vous sont trompeuses tonnes de collègues programmeurs dans obsolète bibliothèques.
- Ok, juste assez. J'ai accepté la demande de réponse.
Vous devez vous connecter pour publier un commentaire.
Ici est la Les demandes façon:
r.headers['Location']
pour voir où il aurait envoyéLocation
àlocation
.Dive Into Python a un bon chapitre sur la gestion des redirections avec urllib2. Une autre solution est httplib.
C'est un urllib2 gestionnaire qui ne suivront pas les redirections:
je suppose que ce serait aider
La
redirections
mot-clé dans lehttplib2
méthode de la requête est un leurre. Plutôt que de revenir à la première demande, il portera unRedirectLimit
exception si elle reçoit une redirection code d'état. Pour revenir à l'initiale de la réponse, vous devez définir lefollow_redirects
àFalse
sur leHttp
objet:Je seconde bta du pointeur de Dive into Python. Voici une mise en œuvre à l'aide de urllib2 rediriger les gestionnaires, en plus de travail que ce qu'elle devrait être? Peut-être, haussement d'épaules.
Le chemin le plus court est cependant