ПРИХОДИТЕ УЧИТЬСЯ НОВОЙ ПРОФЕССИИ ЛЕТОМ СО СКИДКОЙ ДО 70%Забронировать скидку

Извлечение и парсинг JSON данных из URL в Python

Пройдите тест, узнайте какой профессии подходите и получите бесплатную карьерную консультацию
В конце подарим скидку до 55% на обучение
Я предпочитаю
0%
Работать самостоятельно и не зависеть от других
Работать в команде и рассчитывать на помощь коллег
Организовывать и контролировать процесс работы

Быстрый ответ

Для получения данных в формате JSON воспользуйтесь библиотекой requests в Python. Если она пока не установлена, выполните команду pip install requests. Для того чтобы сделать GET-запрос и получить JSON, воспользуйтесь следующим куском кода:

Python
Скопировать код
import requests
json_data = requests.get('ВАШ_URL_ВЕБ-СТРАНИЦЫ').json() # Ваш JSON на ладони!
print(json_data)

Замените 'ВАШ_URL_ВЕБ-СТРАНИЦЫ' на актуальный URL, и вы сразу получите JSON-данные в ваш Python-скрипт.

Пройдите тест и узнайте подходит ли вам сфера IT
Пройти тест

Извлечение JSON: подводные камни

Декодирование данных JSON

В ходе работы с различными API и форматами веб-данных, может встретиться необходимость декодировать содержимое из байтовой строки в текст перед тем, как конвертировать его в JSON. Вот как можно выполнить эту задачу:

Python
Скопировать код
import requests
import json

response = requests.get('ВАШ_URL_ВЕБ-СТРАНИЦЫ')
data = response.content.decode('utf-8') # Декодируем данные
json_data = json.loads(data) # И вуаля! У нас есть JSON.

Обработка исключений при извлечении JSON

Для предотвращения проблем в работе программы, связанных со сбоями при загрузке страницы или несовместимостью данных с форматом JSON, следует добавить обработку исключений:

Python
Скопировать код
import requests
import json
from requests.exceptions import RequestException

try:
    response = requests.get('ВАШ_URL_ВЕБ-СТРАНИЦЫ')
    response.raise_for_status()
    json_data = response.json()
except RequestException as e:
    print(f"Проблема с выполнением HTTP-запроса: {e}")
except json.JSONDecodeError:
    print("Не удалось декодировать JSON. Пожалуйста, попробуйте еще раз.")

Продвинутая работа с HTTP-запросами

Для расширения возможностей управления HTTP-запросами вы можете использовать другие подходы, предоставленные Python.

Взаимодействие с urllib.request

urllib.request из стандартной библиотеки Python может пригодиться в особых случаях работы с HTTP-запросами:

Python
Скопировать код
import urllib.request
import json

url = "ВАШ_URL_ВЕБ-СТРАНИЦЫ"
req = urllib.request.Request(url)

try:
    with urllib.request.urlopen(req) as response:
        data = response.read().decode('utf-8')
        json_data = json.loads(data) # Конвертируем данные в JSON.
except urllib.error.URLError as e:
    print(f"Проблема с URL: {e.reason}")
except json.JSONDecodeError:
    print("При декодировании JSON произошла ошибка.")

Мастерство настройки заголовков запроса

Иногда веб-страницы требуют отправку заголовков вместе с запросом. Библиотека requests облегчает эту задачу:

Python
Скопировать код
import requests

url = 'ВАШ_URL_ВЕБ-СТРАНИЦЫ'
headers = {'User-Agent': 'My User Agent 1.0', 'From': 'youremail@domain.com'}

try:
    response = requests.get(url, headers=headers)
    response.raise_for_status()
    json_data = response.json()
except requests.exceptions.RequestException as e:
    print(f"Запрос завершился с ошибкой: {e}")

Обработка данных JSON из API

Воспользуемся GitHub API для демонстрации работы с JSON:

Python
Скопировать код
import requests

url = 'https://api.github.com/repos/psf/requests'
json_data = requests.get(url).json()  # GitHub API предоставляет нужные данные.
print(f"Название репозитория: {json_data['name']}")
print(f"Количество звёзд: {json_data['stargazers_count']}")  # Величина популярности в цифрах.

Здесь мы извлекаем и анализируем JSON, чтобы получить информацию о репозитории библиотеки requests.

Расширение возможностей HTTP-запросов

Обычно requests — это первый выбор для работы с данными в сети, однако для специфических задач могут потребоваться дополнительные инструменты:

  • BeautifulSoup: необходим, когда нет API и приходится извлекать JSON из HTML.
  • Scrapy: используется для масштабного веб-скрапинга и краулинга.
  • aiohttp: подходит для выполнения асинхронных веб-запросов и управления множеством HTTP-соединений.

Полезные ресурсы

  1. Requests: HTTP for Humans™ — Requests 2.31.0 documentation — руководство по управлению HTTP-запросами с использованием Requests.
  2. Working With JSON Data in Python – Real Python — детальное руководство по работе с JSON в Python от Real Python.
  3. Beautiful Soup Documentation — Beautiful Soup 4.12.0 documentation — руководство по парсингу HTML с помощью Beautiful Soup.
  4. Scrapy | A Fast and Powerful Scraping and Web Crawling Framework — сайт с инструментами для работы с веб-краулингом и скрапингом Scrapy.
  5. Python API Tutorial: Getting Started with APIs – Dataquest — руководство для начинающих по работе с API.
  6. json — JSON encoder and decoder — Python 3.12.2 documentation — официальная документация по кодированию и декодированию JSON в Python.