Какой самый быстрый способ получить HTTP GET в Python, если я знаю, что содержимое будет строкой? Я ищу документацию для быстрого однострочного:
contents = url.get("http://example.com/foo/bar")
Но все, что я могу найти с помощью Google, - httplib
и urllib
- и я не могу найти ярлык в этих библиотеках.
Есть ли в стандартном Python 2.5 ярлык в той или иной форме, как указано выше, или мне следует написать функцию url_get
?
- Я бы предпочел не фиксировать результат обстрела на
wget
илиcurl
.
python
http
networking
Фрэнк Крюгер
источник
источник
Ответы:
Python 3:
Python 2:
Документация для
urllib.request
аread
.источник
close
после вашегоread
. Это необходимо?read
. Ноwith
блок будет более понятным и безопасным для Jython и т. Д.requests
отлично работаетr = urllib2.urlopen("http://blah.com/blah")
и тогдаtext = r.read()
. Это синхрон, просто ждет результата в «тексте».Вы можете использовать библиотеку под названием запросы .
Это довольно просто. Тогда вы можете сделать так:
источник
pip install
). Для не чистых библиотек есть дополнительный шаг - вам нужно загрузитьpip install
lib на экземпляр AWS Linux (тот же вариант ОС, под которым запускаются лямбды), а затем скопировать эти файлы, чтобы иметь двоичную совместимость с AWS Linux. Единственные библиотеки, которые вы не всегда сможете использовать в Lambda, - это библиотеки с бинарным дистрибутивом, которые, к счастью, довольно редки.pip install requests
.from botocore.vendored import requests
Использованиеresponse = requests.get('...')
Если вы хотите, чтобы решение с httplib2 было oneliner, рассмотрите возможность создания анонимного объекта Http
источник
Взгляните на httplib2 , который - наряду с множеством очень полезных функций - предоставляет именно то, что вы хотите.
Где содержимое будет телом ответа (в виде строки), и соответственно будет содержать статус и заголовки ответа.
Он не входит в стандартную установку Python (но требует только стандартный Python), но это определенно стоит проверить.
источник
Это достаточно просто с мощной
urllib3
библиотекой.Импортируйте это так:
И сделайте запрос вот так:
Вы также можете добавить заголовки:
Более подробную информацию можно найти в документации по urllib3 .
urllib3
гораздо безопаснее и проще в использовании, чем встроенные модулиurllib.request
илиhttp
модули, и является стабильным.источник
Решение theller для wget действительно полезно, однако я обнаружил, что оно не распечатывает процесс загрузки. Идеально, если вы добавите одну строку после оператора print в reporthook.
источник
Вот скрипт wget на Python:
источник
Без дальнейшего необходимого импорта это решение работает (для меня) - также с https:
У меня часто возникают трудности с захватом контента, если в информации заголовка не указан «Агент пользователя». Затем обычно запросы отменяются чем-то вроде:
urllib2.HTTPError: HTTP Error 403: Forbidden
илиurllib.error.HTTPError: HTTP Error 403: Forbidden
.источник
Как также отправлять заголовки
Python 3:
Python 2:
источник
Если вы работаете именно с HTTP API, есть и более удобные варианты, такие как Nap .
Например, вот как можно получить информацию о Github с 1 мая 2014 года :
Дополнительные примеры: https://github.com/kimmobrunfeldt/nap#examples
источник
Отличные решения Сюань, Теллер.
Для работы с Python 3 внесите следующие изменения
Кроме того, вводимому URL-адресу должен предшествовать «http: //», в противном случае он возвращает неизвестную ошибку типа URL.
источник
Для
python >= 3.6
, вы можете использовать dload :Для
json
:Установка:
pip install dload
источник
На самом деле в Python мы можем читать из URL, как из файлов, вот пример для чтения JSON из API.
источник
Если вы хотите API более низкого уровня:
источник