Python: отправка запросов с помощью urllib
Python предлагает нам стандартный пакет urllib
для создания сетевых запросов.
Создайте запрос, используя:
from urllib import request
url = 'https://dog.ceo/api/breeds/list/all'
response = request.urlopen(url)
content = response.read()
print(content)
Вы также можете использовать оператор with
для упрощения
from urllib import request
url = 'https://dog.ceo/api/breeds/list/all'
with request.urlopen(url) as response:
content = response.read()
print(content)
Ответ представляет собой последовательность байтов, как вы заметите, поскольку ответ заключен в строку b''
:
b'{"message":{"affenpinscher":[],"african":[],"airedale":[],"akita":[],"appenzeller":[],"australian":["shepherd"],"basenji":[],"beagle":[],"bluetick":[],"borzoi":[],"bouvier":[],"boxer":[],"brabancon":[],"briard":[],"buhund":["norwegian"],"bulldog":["boston","english","french"]},"status":"success"}'
Декодируйте его в строку в кодировке UTF-8, используя content.decode('utf-8')
Код ниже получает содержимое HTML с сайта flavicopes.com:
from urllib import request
url = 'https://flaviocopes.com'
with request.urlopen(url) as response:
content = response.read().decode('utf-8')
print(content)
Вы можете разобрать ответ как JSON, используя модуль json
стандартной библиотеки:
from urllib import request
import json
url = 'https://dog.ceo/api/breeds/list/all'
with request.urlopen(url) as response:
content = response.read()
data = json.loads(content)
print(data['status'])
Если вам нужно указать параметры запроса, используйте метод urllib.parse()
для построения строки запроса:
from urllib import request, parse
url = 'https://api.thecatapi.com/v1/images/search'
parms = {
'limit' : 5,
'page' : 1,
'order' : 'Desc'
}
querystring = parse.urlencode(parms)
with request.urlopen(url + '?' + querystring) as response:
content = response.read().decode('utf-8')
print(content)
Это встроенный пакет urllib
.
Для удобства вы можете использовать пакет requests
, не входящий в стандартную библиотеку Python, но довольно популярный.