Найти в Дзене
Машинное обучение

[📕 Библиотеки ] urllib, urllib2, urllib3, ... ?

Оказывается, что существует несколько библиотек для выполения HTTP запросов на Python. Это может запутать тех, кто впервые начинает работать с этими функциями. Давайте разберемся. 

Жил-был встроенный модуль urllib в Python 2.x. Вышел Python 3 и эту библиотеку разбили на модули urllib.request, urllib.error, urllib.parse. А для ветки Python 2 ее переимевали в urllib2. При этом urllib (без цифр) есть и Python 3, и в Python 2. Итого:

👉 urllib - встроенная библиотека для открытия URL ссылок (преимущественно HTTP запросов).

а) Python 2: не используйте, используйте urllib2 (До версии 2.7.9 urlopen в urllib не проверяет HTTPS сертификаты!)

б) Python 3: можно пользоваться, но неудобная.

👉 urllib2 - это не вторая версия urllib, а версия urllib для Python 2!

👉 urllib3 - это не третья версия urllib, это вообще строронняя библиотека (pip install urllib3). Отличается потокобезопасностью, пулами соединений, поддержкой сжатия, прокси и прочими фишками. Сделана поверх socket.

👉 httplib - это голый HTTP клиент для Python 2. Переименована в http.client в Python 3. Более "низкоуровневый" модуль, чем urllib. Например, если urllib умеет обрабатывать редиректы, то при работе с httplib вам придется реализовать эту логику самостоятельно.

👉 httplib2 - это сторонний HTTP клиент (pip install httplib2). Что еще один?!

А рекомендуется (даже в официальной документации Python) использовать библиотеку requests:

👉 requests - это сторонняя библотека для выполнения HTTP запросов (pip install requests). По общему мнению она обладает наиболее простым и элегантным интерфейсом. При этом она наделена мощным набором возможностей. Кстати, requests сделана поверх urllib3.

python

Python/ django