Очень часто сервера отдают нужную нам информацию в JSON-формате, и наша задача — найти именно тот сетевой запрос, в котором есть JSON, и распарсить его.
Как найти «тот самый запрос с JSON».
Использование инструментов разработчика в браузере для мониторинга сетевых запросов F12 => Вкладка network => Фильтр Fetch\XHR.
Изучение документации к API для определения, какие запросы возвращают данные в формате JSON (Если такая имеется).
Для следующего примера нам понадобится jsonplaceholder, сервис, который предоставляет JSON для разработчиков. У него есть 6 ресурсов -. /posts, /comments, /albums, /photos, /todos, /users
Давайте сделаем запрос на /posts и посмотрим на данные через jsonviewer. Мы увидим 100 постов, где мы можем извлечь четыре поля: «userId», «id», «title», «body». Если мы хотим получить какой-либо определенный элемент, мы должны указать его в квадратных скобках- [«title»].
Для того, чтобы получить все ‘userId’ и ‘title’, мы пройдемся по всем элементам в цикле for:
import requests url = 'https://jsonplaceholder.typicode.com/posts' response = requests.get(url=url).json() for item in response: print(item["userId"], item["title"])
>>> 1 sunt aut facere repellat provident occaecati excepturi optio reprehenderit 1 qui est esse 1 ea molestias quasi exercitationem repellat qui ipsa sit au ... 10 at nam consequatur ea labore ea harum
В результате мы получили все «userId» и «title». Обратите внимание на метод .json(), применяемый к переменной response. Мы рассмотрели метод .json() в разделе, посвященном библиотеке requests. Данный метод позволяет сериализовать информацию, полученную с сервера, в формате JSON-объекта, при условии, что сервер готов предоставить нам эти данные.