Python urllib против httplib? - PullRequest
       27

Python urllib против httplib?

53 голосов
/ 22 июля 2010

Когда кто-нибудь будет использовать httplib, а когда urllib?

В чем различия?

Я думаю, что готовый urllib использует httplib, я планирую создать приложение, которое должно сделать httpзапрос и до сих пор я использовал только httplib.HTTPConnection в python для запросов, и, читая о urllib, я вижу, что я могу использовать это и для запроса, так в чем же преимущество одного или другого?

Ответы [ 6 ]

45 голосов
/ 22 июля 2010

urllib (в частности, urllib2) обрабатывает многие вещи по умолчанию или имеет соответствующие библиотеки для этого.Например, urllib2 будет автоматически выполнять перенаправления, и вы можете использовать cookiejar для обработки сценариев входа.Это все, что вы должны были бы кодировать сами, если бы использовали httplib.

17 голосов
/ 14 ноября 2013

Я хотел бы сказать кое-что о urllib, urllib2, httplib и httplib2.

. Основное различие между urllib* и httplib* состоит в том, что:

httplib и httplib2 обрабатывают запросы и ответы HTTP / HTTP напрямую и дают вам больше места для работы.

urllib и urllib2 созданы на основе httplib, они болееабстрактные и мощные, но иногда не удовлетворяют заданную вами потребность в некоторых операциях, связанных с HTTP.

А для httplib и httplib2 я бы сказал, что они оба HTTP client library.Однако httplib2 гораздо более мощный и имеет гораздо больше возможностей, чем httplib.

Что касается urllib и urllib2, цитата из эта ссылка :

urllib и urllib2 - оба модуля Python, которые выполняют связанные с URL запросы, но предлагают различные функциональные возможности.Их два наиболее значимых различия перечислены ниже:

  • urllib2 может принять объект запроса, чтобы установить заголовки для запроса URL, urllib принимает только URL.Это означает, что вы не можете маскировать строку вашего User Agent и т. Д.
  • urllib предоставляет метод urlencode, который используется для генерации строк запроса GET, urllib2 не имеет такой функции.Это одна из причин, почему urllib часто используется вместе с urllib2.

Я бы порекомендовал мой личный блог Httplib Httplib2 Urllib Urllib2 - в чем разница .

Надеюсь, это поможет: -)

9 голосов
/ 22 июля 2010

urllib / urllib2 построен поверх httplib.Он предлагает больше возможностей, чем прямая запись в httplib.

однако httplib дает вам более точный контроль над основными соединениями.

6 голосов
/ 22 июля 2010

Если вы имеете дело только с http / https и вам нужен доступ к конкретным HTTP-материалам, используйте httplib.

Для всех остальных случаев используйте urllib2.

5 голосов
/ 22 июля 2010

Если вам нужны такие вещи высокого уровня, как кэширование, поддержка активности, сжатие или аутентификация, попробуйте httplib2

0 голосов
/ 20 ноября 2015

Для тех, кто перемещает вещи до Py3 (и по какой-то причине не может или не реорганизовал использовать удивительный запрос модуль), это хороший переход между версиями:

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

Работает в обоих наборах версий Python.

...