web-dev-qa-db-fra.com

Python urllib vs httplib?

Quand est-ce que quelqu'un utiliserait httplib et quand urllib?

Quelles sont les différences?

Je pense que je suis prêt à utiliser urllib avec httplib, je prévois de créer une application qui nécessitera une requête http et je n’ai utilisé jusqu’à présent que httplib.HTTPConnection en python pour les requêtes. Alors, quel est l'avantage de l'un ou l'autre?

51
jahmax

urllib (en particulier urllib2) gère beaucoup de choses par défaut ou a les bibliothèques appropriées pour le faire. Par exemple, urllib2 suivra automatiquement les redirections et vous pouvez utiliser cookiejar pour gérer les scripts de connexion. Ce sont toutes des choses que vous auriez à vous coder si vous utilisiez httplib.

45
Robus

J'aimerais dire quelque chose à propos de urllib, urllib2, httplib et httplib2.

La principale différence entre urllib* et httplib* est la suivante:

httplib et httplib2 traitent directement les requêtes et les réponses HTTP/HTTPs et vous donnent plus d'espace pour effectuer votre propre travail.

urllib et urllib2 sont construits sur httplib, ils sont plus abstraits et puissants, mais ne répondent parfois pas à vos besoins spécifiés concernant certaines opérations liées à HTTP.

Et pour httplib et httplib2, je dirais qu'ils sont tous les deux HTTP client library. Cependant, httplib2 est beaucoup plus puissant et comporte beaucoup plus de fonctionnalités que httplib.

En ce qui concerne urllib et urllib2, citez de ce lien :

urllib et urllib2 sont deux modules Python qui effectuent des tâches liées aux demandes d’URL, mais offrent des fonctionnalités différentes. Les deux différences les plus importantes sont énumérées ci-dessous:

  • urllib2 peut accepter un objet Request pour définir les en-têtes d'une requête d'URL, urllib n'accepte qu'une URL. Cela signifie que vous ne pouvez pas masquer votre chaîne d’agent d’utilisateur, etc.
  • urllib fournit la méthode urlencode utilisée pour la génération de chaînes de requête GET. urllib2 ne dispose pas d'une telle fonction. C'est l'une des raisons pour lesquelles urllib est souvent utilisé avec urllib2.

Je recommanderais mon blog personnel Httplib Httplib2 Urllib Urllib2-quelle est la différence .

J'espère que ça aide:-)

17
Lihang Li

urllib/urllib2 est construit sur httplib. Il offre plus de fonctionnalités que d'écrire directement dans httplib.

cependant, httplib vous donne un contrôle plus fin sur les connexions sous-jacentes.

9
Corey Goldberg

Si vous utilisez uniquement http/https et avez besoin d'accéder à des éléments spécifiques à HTTP, utilisez httplib.

Dans tous les autres cas, utilisez urllib2.

6
Matt Joiner

Si vous avez besoin de choses de haut niveau comme la mise en cache, la persistance, la compression ou l’authentification, essayez httplib2

5
optixx

Pour les personnes déplaçant des éléments jusqu'à Py3 (et pour une raison quelconque, ne peut pas ou n'a pas refactorisé l'utilisation de awesome request module), il s'agit d'une bonne transition entre les versions:

try:
    import http.client as httplib
except ImportError:
    import httplib

Fonctionne dans les deux jeux de versions Python.

0
Cometsong