Читаем Изучаем Python полностью

Наконец, программа выводит ключи словаря response_dict, и мы видим следу­ющее:

Status code: 200

dict_keys(['items', 'total_count', 'incomplete_results'])

Код статуса 200 означает, что запрос был обработан успешно. Словарь ответа содержит всего три ключа: ‘items’, 'total_count' и 'incomplete_results'.

Примечание

Подобные простые вызовы должны возвращать полный набор результатов, поэтому значение, связанное с 'incomplete_results’, можно достаточно безопасно игнорировать. Но, если ваша программа выдает более сложные вызовы API, обязательно проверяйте это значение.

<p>Работа со словарем ответа</p>

Итак, полученная при вызове API информация хранится в словаре, и мы можем заняться работой с данными. Для начала построим сводку с обобщенными сведениями — это позволит убедиться в том, что вызов вернул ожидаемую информацию, и перейти к анализу интересующих данных.

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()

(1) print("Total repositories:", response_dict['total_count'])

# Анализ информации о репозиториях.

(2)repo_dicts = response_dict['items']

print("Repositories returned:", len(repo_dicts))

# Анализ первого репозитория.

(3)repo_dict = repo_dicts[0]

(4)print("\nKeys:", len(repo_dict))

(5)for key in sorted(repo_dict.keys()):

. .print(key)

В точке (1) выводится значение, связанное с 'total_count', которое представляет общее количество репозиториев Python в GitHub.

Значение, связанное с 'items', представляет собой список со словарями, каждый из которых содержит данные об одном репозитории Python. В точке (2) этот список словарей сохраняется в repo_dicts. Затем программа выводит длину repo_dicts, чтобы пользователь видел, по какому количеству репозиториев имеется информация.

Чтобы получить первое представление об информации, возвращенной по каждому репозиторию, программа извлекает первый элемент из repo_dicts и сохраняет его в repo_dict (3). Затем программа выводит количество ключей в словаре — это значение определяет объем доступной информации (4). В точке (5) выводятся все ключи словаря; по ним можно понять, какая информация включена в ответ.

Из сводки начинает вырисовываться более четкая картина полученных данных:

Status code: 200

Total repositories: 713062

Repositories returned: 30

(1) Keys: 68

archive_url

assignees_url

blobs_url

...

url

watchers

watchers_count

API GitHub возвращает подробную информацию о каждом репозитории: в repo_dict 68 ключей (1) . Просмотр ключей дает представление о том, какую информацию можно извлечь о проекте. (Чтобы узнать, какую информацию можно получить через API, следует либо прочитать документацию, либо проанализировать информацию в коде, как мы и поступаем.)

Прочитаем значения некоторых ключей repo_dict:

python_repos.py

...

# Анализ информации о репозиториях.

repo_dicts = response_dict['items']

print("Repositories returned:", len(repo_dicts))

# Анализ первого репозитория.

repo_dict = repo_dicts[0]

print("\nSelected information about first repository:")

(1) print('Name:', repo_dict['name'])

(2)print('Owner:', repo_dict['owner']['login'])

(3)print('Stars:', repo_dict['stargazers_count'])

print('Repository:', repo_dict['html_url'])

(4)print('Created:', repo_dict['created_at'])

(5)print('Updated:', repo_dict['updated_at'])

print('Description:', repo_dict['description'])

В программе выводятся значения, связанные с некоторыми ключами словаря первого репозитория. В точке (1) выводится имя проекта. Владельца проекта представляет целый словарь, поэтому в точке (2) ключ owner используется для обращения к словарю, представляющему владельца, после чего ключ login используется для получения регистрационного имени владельца. В точке (3) выводится количество звезд, заработанных проектом, и URL репозитория GitHub проекта. Далее выводится дата создания (4) и последнего обновления репозитория (5). В завершение выводится описание репозитория; вывод должен выглядеть примерно так:

Status code: 200

Total repositories: 713065

Repositories returned: 30

Selected information about first repository:

Name: httpie

Owner: jkbrzt

Stars: 16101

Repository: https://github.com/jkbrzt/httpie

Created: 2012-02-25T12:39:13Z

Updated: 2015-07-13T14:56:41Z

Description: CLI HTTP client; user-friendly cURL replacement featuring

intuitive UI, JSON support, syntax highlighting, wget-like downloads,

extensions, etc.

Из вывода видно, что на момент написания книги самым «звездным» проектом Python на GitHub был проект HTTPie, владельцем которого является пользователь jkbrzt, и звезды этот проект получил более чем от 16 000 пользователей GitHub. Мы видим URL репозитория проекта, дату создания (февраль 2012 г.) и то, что проект недавно обновлялся. Наконец, из описания следует, что HTTPie помогает выдавать вызовы HTTP из терминала (CLI — сокращение от «Command Line Interface», то есть «интерфейс командной строки»).

Перейти на страницу:

Все книги серии Библиотека программиста

Программист-фанатик
Программист-фанатик

В этой книге вы не найдете описания конкретных технологий, алгоритмов и языков программирования — ценность ее не в этом. Она представляет собой сборник практических советов и рекомендаций, касающихся ситуаций, с которыми порой сталкивается любой разработчик: отсутствие мотивации, выбор приоритетов, психология программирования, отношения с руководством и коллегами и многие другие. Подобные знания обычно приходят лишь в результате многолетнего опыта реальной работы. По большому счету перед вами — ярко и увлекательно написанное руководство, которое поможет быстро сделать карьеру в индустрии разработки ПО любому, кто поставил себе такую цель. Конечно, опытные программисты могут найти некоторые идеи автора достаточно очевидными, но и для таких найдутся темы, которые позволят пересмотреть устоявшиеся взгляды и выйти на новый уровень мастерства. Для тех же, кто только в самом начале своего пути как разработчика, чтение данной книги, несомненно, откроет широчайшие перспективы. Издательство выражает благодарность Шувалову А. В. и Курышеву А. И. за помощь в работе над книгой.

Чед Фаулер

Программирование, программы, базы данных / Программирование / Книги по IT

Похожие книги

1С: Бухгалтерия 8 с нуля
1С: Бухгалтерия 8 с нуля

Книга содержит полное описание приемов и методов работы с программой 1С:Бухгалтерия 8. Рассматривается автоматизация всех основных участков бухгалтерии: учет наличных и безналичных денежных средств, основных средств и НМА, прихода и расхода товарно-материальных ценностей, зарплаты, производства. Описано, как вводить исходные данные, заполнять справочники и каталоги, работать с первичными документами, проводить их по учету, формировать разнообразные отчеты, выводить данные на печать, настраивать программу и использовать ее сервисные функции. Каждый урок содержит подробное описание рассматриваемой темы с детальным разбором и иллюстрированием всех этапов.Для широкого круга пользователей.

Алексей Анатольевич Гладкий

Программирование, программы, базы данных / Программное обеспечение / Бухучет и аудит / Финансы и бизнес / Книги по IT / Словари и Энциклопедии
1С: Управление торговлей 8.2
1С: Управление торговлей 8.2

Современные торговые предприятия предлагают своим клиентам широчайший ассортимент товаров, который исчисляется тысячами и десятками тысяч наименований. Причем многие позиции могут реализовываться на разных условиях: предоплата, отсрочка платежи, скидка, наценка, объем партии, и т.д. Клиенты зачастую делятся на категории – VIP-клиент, обычный клиент, постоянный клиент, мелкооптовый клиент, и т.д. Товарные позиции могут комплектоваться и разукомплектовываться, многие товары подлежат обязательной сертификации и гигиеническим исследованиям, некондиционные позиции необходимо списывать, на складах периодически должна проводиться инвентаризация, каждая компания должна иметь свою маркетинговую политику и т.д., вообщем – современное торговое предприятие представляет живой организм, находящийся в постоянном движении.Очевидно, что вся эта кипучая деятельность требует автоматизации. Для решения этой задачи существуют специальные программные средства, и в этой книге мы познакомим вам с самым популярным продуктом, предназначенным для автоматизации деятельности торгового предприятия – «1С Управление торговлей», которое реализовано на новейшей технологической платформе версии 1С 8.2.

Алексей Анатольевич Гладкий

Финансы / Программирование, программы, базы данных