Байланысты: Изучаем Python. Программирование игр, визуализация данных, веб-приложения ( PDFDrive )
Глава 17 • Работа с API
Установка пакета requests
Пакет
requests
предоставляет удобные средства для запроса информации с сайтов
из программ Python и анализа полученных ответов. Чтобы установить
requests
,
введите команду следующего вида:
$
pip install --user requests Если вы еще не использовали
pip
, обратитесь к разделу «Установка пакетов Python
с использованием pip» на с. 227. (Возможно, вам придется использовать другую
версию команды в зависимости от конфигурации системы.)
Обработка ответа API
Теперь мы напишем программу, которая выдает вызов API для поиска на Github
проектов Python с наибольшим количеством звезд:
python_repos.py
import requests
# Создание вызова API и сохранение ответа.
url = 'https://api.github.com/search/repositories?q=language:python
&sort=stars'
r = requests.get(url)
print("Status code:", r.status_code)
# Сохранение ответа API в переменной.
response_dict = r.json()
# Обработка результатов.
print(response_dict.keys())
В точке
импортируется модуль
requests
. В точке
URL-адрес вызова API со-
храняется в переменной, после чего модуль
requests
используется для вызова
.
Мы вызываем метод
get()
и передаем ему URL, а объект ответа сохраняется
в переменной
r
. Объект ответа содержит атрибут
status_code
, в котором хранится
признак успешного выполнения запроса. (Код 200 — признак успешного ответа.)
В точке
программа выводит значение
status_code
, чтобы вы могли убедиться
в том, что вызов был обработан успешно.
API возвращает информацию в формате JSON, поэтому в программе используется
метод
json()
для преобразования информации в словарь Python. Полученный
словарь сохраняется в переменной
response_dict
.
Наконец, программа выводит ключи словаря
response_dict
, и мы видим следу-
ющее:
Status code: 200
dict_keys(['items', 'total_count', 'incomplete_results'])
Код статуса 200 означает, что запрос был обработан успешно. Словарь ответа со-
держит всего три ключа: ‘
items
’,
'total_count'
и
'incomplete_results'
.