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


Глава 17 • Работа с API Рис. 17.4



Pdf көрінісі
бет224/266
Дата03.03.2023
өлшемі7,86 Mb.
#170986
түріКнига
1   ...   220   221   222   223   224   225   226   227   ...   266
Байланысты:
Изучаем Python. Программирование игр, визуализация данных, веб-приложения ( PDFDrive )

374
Глава 17 • Работа с API
Рис. 17.4.
При наведении указателя мыши на столбец появляется описание проекта
Добавление активных ссылок на диаграмму
Pygal также позволяет использовать каждый столбец диаграммы как ссылку 
на сайт. Чтобы реализовать эту возможность, достаточно добавить всего одну 
строку кода, в которой используется словарь, создаваемый для каждого проекта. 
В словарь 
plot_dict
каждого проекта добавляется новая пара «ключ—значение» 
с ключом 
'xlink'
:
python_repos.py
...
names, plot_dicts = [], []
for repo_dict in repo_dicts:
names.append(repo_dict['name'])
plot_dict = {
'value': repo_dict['stargazers_count'],
'label': repo_dict['description'],
'xlink': repo_dict['html_url'],
}
plot_dicts.append(plot_dict)
...
Pygal использует URL-адрес, связанный с 
'xlink'
, для преобразования каждого 
столбца в активную ссылку. Если щелкнуть на любом столбце диаграммы, в брау-
зере автоматически открывается новая вкладка со страницей GitHub соответству-
ющего проекта. Итак, мы создали интерактивную, содержательную визуализацию 
данных, загруженных через API!


Использование API веб-приложений
375
API Hacker News
Чтобы познакомиться с использованием вызовов API для других сайтов, мы об-
ратимся к сайту Hacker News (
http://news.ycombinator.com/
). На этом сайте поль-
зователи делятся друг с другом статьями, посвященными программированию 
и технологиям, а также активно обсуждают эти статьи. API сайта Hacker News 
предоставляет доступ ко всем статьям и комментариям на сайте, а для его исполь-
зования не требуется регистрация с получением ключа.
Следующий вызов возвращает информацию о текущей самой популярной статье 
(на момент написания книги):
https://hacker-news.firebaseio.com/v0/item/9884165.json
Ответ представляет собой словарь с информацией о статье с идентификатором 
9884165:
{
 
'url': 'http://www.bbc.co.uk/news/science-environment-33524589',
'type': 'story',
 
'title': 'New Horizons: Nasa spacecraft speeds past Pluto',
 
'descendants': 141,
'score': 230,
'time': 1436875181,
'text': '',
'by': 'nns',
'id': 9884165,
 
'kids': [9884723, 9885099, 9884789, 9885604, 9885844]
}
Словарь содержит ряд ключей, которые могут нам пригодиться, — например, 
'url'

и 
'title'

. Ключ 
'descendants'
содержит количество комментариев, 
полученных статьей

. Ключ 
'kids'
предоставляет идентификаторы всех 
дочерних 
комментариев, сделанных непосредственно в ответ на эту статью 

. У каждого из 
этих комментариев могут быть свои дочерние комментарии, так что количество 
потомков у статьи может быть больше количества дочерних комментариев.
Создадим вызов API для получения идентификаторов статей, наиболее популяр-
ных на Hacker News, а затем рассмотрим каждую из этих статей:
hn_submissions.py
import requests
from operator import itemgetter
# Создание вызова API и сохранение ответа.
 
url = 'https://hacker-news.firebaseio.com/v0/topstories.json'
r = requests.get(url)
print("Status code:", r.status_code)
# Обработка информации о каждой статье.
 
submission_ids = r.json()
 
submission_dicts = []
for submission_id in submission_ids[:30]:


376

Достарыңызбен бөлісу:
1   ...   220   221   222   223   224   225   226   227   ...   266




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

    Басты бет