Python urllib vs httplib?

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

В чем отличия?

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

Ответ 1

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

Ответ 2

Я хотел бы сказать что-то о 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 может принимать объект Request для установки заголовков для запроса URL-адреса, urllib принимает только URL-адрес. Это означает, что вы не можете маскировать свою строку User Agent и т.д.
  • urllib предоставляет метод urlencode, который используется для генерации строк запроса GET, urllib2 не имеет такой функции. Это одна из причин, почему urllib часто используется вместе с urllib2.

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

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

Ответ 3

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

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

Ответ 4

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

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

Ответ 5

Если вам нужны материалы высокого уровня, такие как Caching, Keep-Alive, Compression или Authentication, попробуйте httplib2

Ответ 6

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

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

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