Что нужно сделать
Фанаты «Звёздных войн» (Star Wars) написали API по своей любимой вселенной. Ссылка на документацию: https://swapi.dev/ Внимательно изучите документацию этого API и напишите программу, которая выводит на экран (и в JSON-файл) информацию о пилотах легендарного корабля Millennium Falcon. Информация о корабле должна содержать следующие пункты:
- название,
- максимальная скорость,
- класс,
- список пилотов.
Внутри списка о каждом пилоте должна быть следующая информация:
- имя,
- рост,
- вес,
- родная планета,
- ссылка на информацию о родной планете.
Что оценивается
- Результат вычислений корректен.
- Информация собрана в словарь с правильной структурой.
- Переменные, функции и собственные методы классов имеют значащие имена (не a, b, c, d).
import requests, json
def starscraping(url: str='https://swapi.dev/api/'):
'''Функция собирает информацию о корабле Millennium Falcon,
записывает в файл .json и возвращает'''
req = requests.get(f'{url}starships')
data = json.loads(req.text)
result = dict()
for ship in data['results']:
if ship['name'] == 'Millennium Falcon':
result = {
'Название': ship['name'],
'Максимальная скорость': ship['max_atmosphering_speed'],
'Класс': ship['starship_class'],
'Список пилотов': []
}
for url in ship['pilots']:
pilot_req = requests.get(url)
pilot_data = json.loads(pilot_req.text)
planet_req = requests.get(pilot_data['homeworld'])
planet_data = json.loads(planet_req.text)
pilot_info = {
'Имя': pilot_data['name'],
'Рост': pilot_data['height'],
'Вес': pilot_data['mass'],
'Родная планета': planet_data['name'],
'Ссылка на информацию о планете': pilot_data['homeworld']
}
result['Список пилотов'].append(pilot_info)
with open('starship.json', 'w', encoding='UTF-8') as file:
json.dump(result, file, indent=4)
return result
def main():
print(starscraping())
if __name__ == '__main__':
main()