Использование
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]: