Оказывается, что существует несколько библиотек для выполения 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