Каковы различия между urllib, urllib2 и модулем запросов?

просто установите 64-разрядную версию JAVA из http://java.com/en/download/manual.jsp

и удалите старую версию, если будет предложено 64-битное установщик

643
задан pppery 6 January 2018 в 02:34
поделиться

4 ответа

urllib2.urlopen принимает экземпляр класса Request или url, в то время как urllib.urlopen принимает только url.

Похожее обсуждение произошло и здесь: http://www.velocityreviews.com/forums/t326690-urllib-urllib2-what-is-the-difference.html

12
ответ дан 3 October 2019 в 22:52
поделиться

Обычно следует использовать urllib2, так как иногда это немного упрощает процесс принятия объектов Запроса, а также вызывает URLException при ошибках протокола. С Google App Engine, однако, вы не можете использовать и его. Вы должны использовать URL Fetch API, который Google предоставляет в своем окружении песочницы Python.

.
5
ответ дан 22 November 2019 в 21:40
поделиться

urllib2 предоставляет некоторую дополнительную функциональность, а именно функция urlopen() может позволить вам указывать заголовки (обычно в прошлом вам приходилось использовать httplib, что гораздо более многословно). Однако, что более важно, urllib2 предоставляет класс Request, который позволяет более декларативный подход к выполнению запроса:

r = Request(url='http://www.mysite.com')
r.add_header('User-Agent', 'awesome fetcher')
r.add_data(urllib.urlencode({'foo': 'bar'})
response = urlopen(r)

Обратите внимание, что urlencode() находится только в urllib, а не в urllib2.

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

Бонусный ответ С Google App Engine, вы можете использовать любой из httplib, urllib или urllib2, но все они являются просто обертками для Google URL Fetch API. То есть, вы все еще подвержены тем же ограничениям, таким как порты, протоколы и длина разрешенного ответа. Тем не менее, вы можете использовать ядро библиотек так, как вы ожидаете для получения HTTP URL.

194
ответ дан 22 November 2019 в 21:40
поделиться

Мне нравится функция urllib.urlencode , но ее нет в urllib2 .

>>> urllib.urlencode({'abc':'d f', 'def': '-!2'})
'abc=d+f&def=-%212'
11
ответ дан 22 November 2019 в 21:40
поделиться
Другие вопросы по тегам:

Похожие вопросы: