Книга «Изучаем Python»



Pdf көрінісі
бет199/238
Дата07.01.2022
өлшемі7,86 Mb.
#18670
түріКнига
1   ...   195   196   197   198   199   200   201   202   ...   238
ПРИМЕЧАНИЕ

Подобные простые вызовы должны возвращать полный набор результатов, поэтому значе-

ние, связанное с 'incomplete_results’, можно достаточно безопасно игнорировать . Но, если 

ваша программа выдает более сложные вызовы API, обязательно проверяйте это значение .

Работа со словарем ответа

Итак, полученная при вызове 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()

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



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

repo_dicts = response_dict['items']



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

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

repo_dict = repo_dicts[0]



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

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



    print(key)

В точке  выводится значение, связанное с 

'total_count'

, которое представляет 

общее количество репозиториев Python в GitHub.

Значение, связанное с 

'items'

, представляет собой список со словарями, каждый 

из которых содержит данные об одном репозитории Python. В точке  этот список 

словарей сохраняется в 

repo_dicts

. Затем программа выводит длину 

repo_dicts

чтобы пользователь видел, по какому количеству репозиториев имеется инфор-



мация.

Чтобы получить первое представление об информации, возвращенной по каждому 

репозиторию, программа извлекает первый элемент из 

repo_dicts

 и сохраняет его 

в 

repo_dict



 . Затем программа выводит количество ключей в словаре — это зна-

чение определяет объем доступной информации . В точке  выводятся все ключи 

словаря; по ним можно понять, какая информация включена в ответ.

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

Status code: 200

Total repositories: 713062




366    Глава 17  •  Работа с API

Repositories returned: 30

Keys: 68


archive_url

assignees_url

blobs_url

...


url

watchers


watchers_count

API GitHub возвращает подробную информацию о каждом репозитории: в 

repo_

dict


 68 ключей . Просмотр ключей дает представление о том, какую информацию 

можно извлечь о проекте. (Чтобы узнать, какую информацию можно получить 

через 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:")

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



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

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



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

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



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

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

В программе выводятся значения, связанные с некоторыми ключами словаря пер-

вого репозитория. В точке  выводится имя проекта. Владельца проекта представ-

ляет целый словарь, поэтому в точке  ключ 

owner

 используется для обращения 



к словарю, представляющему владельца, после чего ключ 

login


 используется для 

получения регистрационного имени владельца. В точке  выводится количество 

звезд, заработанных проектом, и URL репозитория GitHub проекта. Далее выво-

дится дата создания  и последнего обновления репозитория . В завершение 

выводится описание репозитория; вывод должен выглядеть примерно так:

Status code: 200

Total repositories: 713065 

Repositories returned: 30 

Selected information about first repository: 

Name: httpie 

Owner: jkbrzt 

Stars: 16101 




Использование API веб-приложений    367

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», 

то есть «интерфейс командной строки»).

Сводка самых популярных репозиториев

При построении визуализации этих данных на диаграмму необходимо нанести 

более одного репозитория. Напишем цикл для вывода информации о каждом ре-

позитории, возвращаемом вызовом API, чтобы все эти репозитории можно было 

включить в визуализацию:



Достарыңызбен бөлісу:
1   ...   195   196   197   198   199   200   201   202   ...   238




©emirsaba.org 2024
әкімшілігінің қараңыз

    Басты бет