DevGang
Авторизоваться

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, но довольно популярный.

Источник:

#Python
Комментарии
Чтобы оставить комментарий, необходимо авторизоваться