В прошлой статье мы говорили об использовании Python в работе с API, о том, как много интересной, чувствительной информации можно получить через различные API. Многие из API возвращают данные в формате JSON, CSV и XML. Сегодня рассмотрим работу с JSON в Python, а вот о других форматах, поговорим в отдельной статье.
Еще по теме: Создание бэкдора на Python
Работа с JSON в Python
В прошлой статье был хороший пример JSON при работе с API.
В ответ на запрос мы получаем список из 30 объектов ( items[0], items[1], items[2] и т. д.), каждый из которых соответствует конкретному пользователю.
Каждый объект имеет свойства, в которых хранится информация о пользователе: login, html_url, id, Followers_url и т.д.
Теперь попробуем извлечь данные из файлов JSON с помощью кода. Пакет JSON (https://docs.python.org/3/library/json.html) доступен в Python по умолчанию и не требует установки.
Чтение одного поля
Запустите read_one_field.py:
1 2 3 4 5 6 7 8 9 10 11 12 13 |
# Импорт json и модулей: import json import requests # Запрос Github API (который использовали в предыдущей статье): lesson: response = requests.get("https://api.github.com/search/users?q=javascript") # Присвоить переменной значение ответа на запрос в формате json: Json_data = response.json() # Вывести общее количество результатов: print (json_data['total_count']) # Вывести из результатов ссылку на первый профиль Github: print (json_data['items'][0]['html_url'] |
Пусть вас не пугает терминал, я использую GitPod.
Но чаще всего нам нужно извлечь не отдельное значение, а информацию о целом списке объектов. Например, ссылки на профили пользователей Github из примера выше.
Чтение списка полей
Запустите read_list_of_fields.py:
1 2 3 4 5 6 7 8 9 10 11 12 13 |
# Импорт json и пакетов запросов: import json import requests # Сделать запрос к API: response = requests.get("https://api.github.com/search/users?q=javascript") # Получить результат в формате JSON: json_data=response.json() # Подсчитать количество результатов: usersCount = len(json_data['items'])-1 # Отобразить ссылку на каждый результат в цикле: for x in range(usersCount): print (json_data['items'][x]['html_url'] |
Часто бывает так, что структура файлов JSON довольно сложная и сложно понять, как разметить путь к тем или иным данным. В этом помогут разобраться специальные службы. Например, https://jsonpath.com/ или https://jsonpathfinder.com.
Заключение
Прежде чем писать какой-либо код для обработки JSON-файлов, помните, что иногда проще конвертировать их в CSV-файлы и просто вырезать столбцы с нужными данными. Сделать это можно онлайн.
В следующей статье речь пойдет о CSV и Python.
ПОЛЕЗНЫЕ ССЫЛКИ: