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



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


Глава 17 • Работа с API
# Создание отдельного вызова API для каждой статьи.
 
url = ('https://hacker-news.firebaseio.com/v0/item/' +
str(submission_id) + '.json')
submission_r = requests.get(url)
print(submission_r.status_code)
response_dict = submission_r.json()
 
submission_dict = {
'title': response_dict['title'],
'link': 'http://news.ycombinator.com/item?id=' + str(submission_id),
 
'comments': response_dict.get('descendants', 0)
}
submission_dicts.append(submission_dict)
 
submission_dicts = sorted(submission_dicts,
key=itemgetter('comments'),
reverse=True)
 
for submission_dict in submission_dicts:
print("\nTitle:", submission_dict['title'])
print("Discussion link:", submission_dict['link'])
print("Comments:", submission_dict['comments'])
Сначала программа создает вызов API и выводит статус ответа 

. Этот вызов API 
возвращает список идентификаторов 500 самых популярных статей на Hacker News 
на момент выдачи вызова. Текст ответа преобразуется в список Python 

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

создается пустой список с именем 
submission_dicts
для хранения сло-
варей. Далее программа перебирает идентификаторы 30 самых популярных статей 
и выдает новый вызов API для каждой статьи, генерируя URL с текущим значением 
submission_id

. Также выводится статус каждого запроса, чтобы мы могли про-
верить, успешно ли он был обработан.
В точке 

создается словарь для текущей обрабатываемой статьи, в котором со-
храняется заголовок статьи и ссылка на страницу с ее обсуждением. В точке 

сохраняется количество комментариев в словаре. Если статья еще не имеет коммен-
тариев, ключ 
'descendants'
отсутствует. Если вы не уверены, существует ли ключ 
в словаре, используйте метод 
dict.get()
, который возвращает значение, связанное 
с ключом (если он существует), или значение, заданное вами (если ключ не суще-
ствует), — 0 в данном примере. Наконец, словарь 
submission_dict
присоединяется 
к списку 
submission_dicts
.
Статьи Hacker News ранжируются по общей системе, основанной на нескольких 
факторах: сколько раз за статью голосовали, сколько комментариев она получила 
и давно ли была опубликована. Требуется отсортировать список словарей по коли-
честву комментариев. Для этого мы используем функцию 
itemgetter()

из модуля 
operator
. Мы передаем этой функции ключ 
'comments'
, а она извлекает значение, 
связанное с данным ключом, из каждого словаря в списке. Функция 
sorted()
затем 
использует это значение для сортировки списка. Мы сортируем список в обратном 
порядке, чтобы публикации с наибольшим количеством комментариев оказались 
на первом месте.


Использование API веб-приложений
377
После того как список будет отсортирован, мы перебираем элементы 

и выводим 
для каждой из самых популярных статей три атрибута: заголовок, ссылку на стра-
ницу обсуждения и текущее количество комментариев:
Status code: 200
200
200
200
..
Title: Firefox deactivates Flash by default
Discussion link: http://news.ycombinator.com/item?id=9883246
Comments: 231
Title: New Horizons: Nasa spacecraft speeds past Pluto 
Discussion link: http://news.ycombinator.com/item?id=9884165 
Comments: 142
Title: Iran Nuclear Deal Is Reached With World Powers
Discussion link: http://news.ycombinator.com/item?id=9884005
Comments: 141
Title: Match Group Buys PlentyOfFish for $575M
Discussion link: http://news.ycombinator.com/item?id=9884417
Comments: 75
Title: Our Nexus 4 devices are about to explode
Discussion link: http://news.ycombinator.com/item?id=9885625
Comments: 14
...
Аналогичный процесс применяется для обращения и анализа информации из лю-
бого API. С такими данными вы сможете построить визуализацию, показыва-
ющую, какие публикации вызывали наиболее активные обсуждения в последнее 
время.


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




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

    Басты бет