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.