
JSON-файлы часто содержат данные, с которыми работают веб-приложения: списки товаров, результаты поиска, параметры фильтров или комментарии пользователей. Эти данные могут быть встроены в HTML-код страницы, загружаться динамически через JavaScript или приходить с API-запросов. Чтобы извлечь их, необходимо понимать, где именно браузер получает JSON и как его перехватить.
Наиболее доступные способы анализа страницы – использование панели Network в инструментах разработчика браузера, просмотр исходного HTML и поиск встроенных структур JSON в тегах <script>. В некоторых случаях данные подгружаются через XHR или fetch-запросы, и тогда нужный ответ можно скопировать прямо из вкладки «Сеть».
Для автоматизации извлечения JSON подойдут инструменты вроде Python с библиотеками requests и BeautifulSoup или Node.js с axios и cheerio. Они позволяют отправлять HTTP-запросы, парсить содержимое страницы и сохранять JSON в структурированном виде. Важно корректно обработать кодировку и убедиться, что данные не защищены динамической подгрузкой через JavaScript – в таком случае пригодятся headless-браузеры, например Puppeteer или Playwright.
Знание методов поиска и извлечения JSON облегчает анализ сайтов, работу с API без документации и построение собственных инструментов сбора данных. Главное – определить источник данных, изучить сетевые запросы и выбрать подходящий способ их обработки.
Поиск встроенного JSON в исходном коде страницы

Во многих случаях данные на странице загружаются не из внешнего API, а уже присутствуют внутри HTML в виде встроенного JSON. Такой формат часто используется для передачи конфигураций или контента в JavaScript-приложения. Чтобы найти эти данные, нужно открыть исходный код страницы (Ctrl+U) или использовать вкладку «Elements» в инструментах разработчика браузера.
Наиболее частые места размещения JSON – внутри тегов <script> с типом application/ld+json, application/json или в JavaScript-переменных. Например, часто встречается структура: <script>window.__INITIAL_STATE__ = {...}</script>. В таких случаях содержимое фигурных скобок и есть нужный JSON.
Чтобы извлечь эти данные, удобно использовать поиск по ключевым словам вроде {, "@context", "data" или имени переменной, связанной с контентом. В браузере можно применять поиск по исходному коду (Ctrl+F), чтобы быстро выделить JSON-блок. Если JSON обрамлён тегами, можно скопировать содержимое вручную либо извлечь его через консоль: JSON.parse(document.querySelector('script[type="application/json"]').textContent).
Если JSON встроен в скрипт без явного типа, стоит использовать регулярные выражения для его извлечения. Пример шаблона для JavaScript: /{.*}/s в сочетании с уточнением границ по известному названию переменной. После извлечения стоит проверить корректность структуры через валидатор JSON или функцию JSON.parse().
Определение JSON внутри тега с типом application/json
Многие сайты размещают структурированные данные внутри тега <script> с атрибутом type="application/json". Такой формат используется для хранения конфигураций, данных каталога, настроек фильтров или контента, который обрабатывается JavaScript-кодом. Определить этот JSON можно через просмотр исходного кода страницы или с помощью инструментов разработчика.
При просмотре исходного кода нужно искать теги следующего вида:
<script type="application/json" id="product-data">
{
"id": 1452,
"name": "Ноутбук Lenovo",
"price": 38999
}
</script>
Чтобы найти такие блоки автоматически, удобно использовать регулярные выражения или парсеры HTML. Например, с помощью Python и библиотеки BeautifulSoup можно извлечь содержимое по атрибуту type="application/json":
from bs4 import BeautifulSoup
import json
html = open("page.html").read()
soup = BeautifulSoup(html, "html.parser")
scripts = soup.find_all("script", type="application/json")
for tag in scripts:
data = json.loads(tag.string)
print(data)
Если таких тегов несколько, стоит проверять их идентификаторы или содержимое, чтобы выбрать нужный JSON, например, по id="__NEXT_DATA__" или по наличию ключей вроде "props", "pageProps", "context".
Для быстрой навигации можно использовать сочетание клавиш Ctrl+F и искать строку application/json в исходном коде страницы.
| Метод | Инструмент | Результат |
|---|---|---|
| Поиск вручную | Исходный код страницы | Просмотр JSON в тегах script |
| Автоматическое извлечение | BeautifulSoup, lxml, cheerio | Парсинг и загрузка данных |
| Поиск по ключевым словам | Ctrl+F / DevTools | Быстрое определение нужного блока |
После извлечения содержимого JSON можно сохранить его в файл или использовать в дальнейшем парсинге для анализа данных страницы.
Извлечение JSON из сетевых запросов через инструменты разработчика
Большинство современных сайтов получают данные в формате JSON через запросы к API. Чтобы найти и извлечь эти данные, достаточно воспользоваться вкладкой Network в инструментах разработчика браузера.
- Откройте страницу в браузере и включите инструменты разработчика (F12 или Ctrl+Shift+I).
- Перейдите на вкладку Network и обновите страницу, чтобы отобразились все сетевые запросы.
- Отфильтруйте запросы по типу XHR или Fetch – именно они содержат JSON-ответы от серверов.
- Найдите запрос с расширением .json или с заголовком Content-Type: application/json.
- Откройте вкладку Response в деталях выбранного запроса – в ней будет содержаться полный JSON-объект.
- Скопируйте содержимое ответа, нажав правой кнопкой мыши и выбрав пункт Copy response или вручную выделив текст.
Если структура ответа сложная, удобнее использовать форматирование через онлайн-парсер JSON или встроенный просмотрщик данных, чтобы просмотреть объекты и массивы в удобном виде.
Для постоянного доступа к данным можно зафиксировать нужный запрос: нажмите правой кнопкой мыши по нему и выберите Save all as HAR with content. Это позволит сохранить все сетевые ответы, включая JSON, для последующего анализа.
При работе с динамическими сайтами, где данные подгружаются после действий пользователя, запускайте поиск запросов после выполнения этих действий (например, прокрутки, клика по кнопке). Так можно выявить скрытые API, возвращающие JSON напрямую.
Получение JSON из динамически подгружаемых данных на странице

Многие сайты формируют содержимое не сразу при загрузке HTML, а подгружают данные через AJAX или Fetch-запросы. Чтобы извлечь JSON из таких страниц, необходимо отследить сетевые обращения браузера к серверу и определить, где именно возвращаются данные в формате JSON.
Откройте инструменты разработчика (обычно клавиша F12) и перейдите на вкладку «Network». Перезагрузите страницу, чтобы зафиксировать все запросы. В фильтре выберите тип «XHR» или «Fetch», чтобы отображались только асинхронные запросы. Среди списка запросов найдите те, которые возвращают данные в формате JSON – в колонке «Type» они могут обозначаться как «json» или иметь заголовок ответа Content-Type: application/json.
Кликните по нужному запросу, затем откройте вкладку «Response». Если сервер возвращает структуру JSON, можно скопировать её целиком, нажав правой кнопкой мыши и выбрав «Copy → Copy response». В некоторых случаях данные могут быть вложены в другие объекты или зашифрованы – тогда их можно форматировать с помощью сторонних инструментов или декодировать прямо в консоли браузера с помощью JSON.parse().
Если страница использует динамическую подгрузку при прокрутке или взаимодействии пользователя, повторите анализ после каждого действия. Для точного отслеживания полезно зафиксировать фильтр по ключевым словам в URL, например «api», «data» или «json», чтобы быстрее находить целевые запросы среди многочисленных обращений к серверу.
После получения JSON можно сохранить его локально для дальнейшего анализа, используя команду Save all as HAR на вкладке «Network» или экспортировать нужный ответ в отдельный файл. Это упрощает разбор динамических структур данных и позволяет анализировать содержимое без повторного обращения к странице.
Использование регулярных выражений для извлечения JSON-фрагментов
Когда структура страницы не позволяет напрямую получить данные из тегов или сетевых запросов, можно применить регулярные выражения для поиска JSON-фрагментов внутри HTML-кода. Этот способ особенно полезен, если данные встроены в текстовые блоки или скрипты без явного обозначения типа.
Регулярное выражение должно точно определять границы JSON-объекта. Например, в Python можно использовать шаблон:
re.findall(r’\\{.*?\\}’, html, re.DOTALL)
Однако такой шаблон может извлечь лишние фрагменты. Лучше ограничить поиск конкретными признаками, например по названию ключа:
re.search(r’var data = (\\{.*?\\});’, html, re.DOTALL)
Для надёжности стоит проверять найденный фрагмент с помощью json.loads(). Если JSON некорректен, можно предварительно очистить строку – удалить лишние запятые, экранировать кавычки или заменить одинарные кавычки на двойные.
При работе с большими страницами лучше использовать флаг re.DOTALL, чтобы шаблон охватывал многострочные объекты, и re.MULTILINE для поиска по всей структуре документа. Рекомендуется сохранять найденные фрагменты в отдельный список и последовательно валидировать каждый.
Регулярные выражения применимы только тогда, когда структура JSON предсказуема. Если на странице динамически вставляются данные, целесообразно комбинировать этот метод с анализом DOM или сетевых запросов.
Парсинг HTML и выделение JSON при помощи Python и BeautifulSoup

Для извлечения JSON из HTML-страницы удобен модуль BeautifulSoup из библиотеки bs4. Сначала необходимо получить HTML-код страницы, используя requests.get(), после чего передать его в объект BeautifulSoup с парсером 'html.parser'.
Если JSON находится внутри тега <script>, можно найти все скрипты методом soup.find_all('script') и фильтровать их по наличию ключевых слов или атрибутов, например type="application/ld+json". После нахождения нужного тега извлекается текст с помощью script_tag.string или script_tag.get_text().
Полученный текстовый фрагмент JSON необходимо обработать через модуль json: json.loads(script_content) превращает строку в объект Python (словарь или список), который удобно использовать для анализа и дальнейшей обработки данных.
Для страниц с несколькими встроенными JSON можно реализовать цикл по тегам <script>, проверяя наличие валидного JSON через блок try/except json.JSONDecodeError. Это позволяет игнорировать скрипты с JavaScript-кодом и выделять только корректные JSON-фрагменты.
В качестве оптимизации рекомендуется использовать фильтрацию тегов по атрибутам и содержимому перед попыткой декодирования, чтобы сократить количество ошибок и ускорить обработку больших HTML-страниц.
Проверка корректности и структурации найденного JSON

После извлечения JSON с веб-страницы важно убедиться в его синтаксической корректности и структурной целостности. Некорректный JSON приведет к ошибкам при дальнейшей обработке в Python или других языках программирования.
Для проверки корректности можно использовать стандартный модуль json:
import json
try:
data = json.loads(raw_json)
except json.JSONDecodeError as e:
print("Ошибка синтаксиса JSON:", e)
Если JSON корректен, необходимо убедиться, что структура соответствует ожидаемой. Для этого удобно:
- Вывести ключи верхнего уровня:
print(data.keys())для словарей. - Проверить типы значений: строки, числа, массивы или вложенные объекты.
- При массиве объектов пройтись по первым элементам и убедиться в наличии необходимых полей.
Для автоматической структурной проверки можно использовать jsonschema. Пример:
from jsonschema import validate, ValidationError
schema = {
"type": "object",
"properties": {
"id": {"type": "integer"},
"name": {"type": "string"},
"items": {"type": "array"}
},
"required": ["id", "name"]
}
try:
validate(instance=data, schema=schema)
except ValidationError as e:
print("Ошибка структуры JSON:", e)
После проверки синтаксиса и структуры JSON можно безопасно использовать для анализа, записи в базу данных или дальнейшей трансформации. Рекомендуется сохранять исходный файл и вести лог ошибок, чтобы отслеживать некорректные элементы.
Сохранение и дальнейшая обработка извлечённых данных

После извлечения JSON важно сохранить его в формате, удобном для последующего анализа. Наиболее универсальный способ – запись в файл с расширением .json с кодировкой UTF-8. В Python это выполняется через модуль json:
with open('data.json', 'w', encoding='utf-8') as f:
json.dump(data, f, ensure_ascii=False, indent=4)
Для больших объёмов данных предпочтительно использовать потоковую запись или базы данных. Форматы SQLite, PostgreSQL или MongoDB позволяют сохранять структурированные JSON и выполнять запросы без необходимости загружать весь файл в память.
Дальнейшая обработка зависит от задач: для анализа удобны библиотеки pandas или numpy, которые позволяют фильтровать записи, строить агрегаты и преобразовывать структуру JSON в таблицы. Для веб-приложений JSON часто сериализуют обратно в строку с json.dumps() или передают через API.
Если данные требуют очистки, полезно проверить ключи и типы значений, удалять дублирующиеся записи, нормализовать вложенные структуры. Для регулярной автоматизации создаются скрипты или пайплайны, которые извлекают, сохраняют и преобразуют JSON без ручного вмешательства.
Архивация и версия данных также критична: хранение оригинальных JSON-файлов и их промежуточных версий позволяет откатываться к исходным данным при ошибках обработки или изменении формата.
Вопрос-ответ:
Что такое JSON и зачем его искать на веб-странице?
JSON (JavaScript Object Notation) — это формат обмена данными, который часто используется для передачи информации между сервером и браузером. На веб-страницах данные могут храниться внутри скриптов или загружаться динамически через запросы к серверу. Извлечение JSON позволяет получить структуру данных для анализа, автоматизации задач или интеграции с другими приложениями.
Какими способами можно найти JSON в исходном коде страницы?
JSON может быть встроен напрямую в HTML внутри тегов <script> с типом application/json, в виде JavaScript-переменных или в атрибутах данных. Для поиска используется просмотр исходного кода через браузер, поиск ключевых слов вроде ‘{‘ или ‘[‘ и анализ содержимого тегов script. Также полезно проверять ответы сетевых запросов на вкладке Network в инструментах разработчика.
Как извлечь JSON из динамически подгружаемых данных?
Динамические данные часто подгружаются через API или AJAX-запросы. Для их получения нужно открыть вкладку Network в DevTools, фильтровать запросы по типу XHR или Fetch, найти ответ сервера, который содержит JSON, и скопировать его. После этого JSON можно сохранить в файл или обработать программно с помощью Python, JavaScript или других инструментов.
Можно ли автоматически проверять корректность найденного JSON?
Да, проверку можно выполнять средствами программирования или онлайн-сервисами. В Python используется модуль json: функция json.loads() пытается разобрать строку и выдаёт ошибку при некорректном формате. В браузере JSON можно вставить в консоль и выполнить JSON.parse(). Такие проверки помогают убедиться, что структура соответствует стандарту и данные можно безопасно использовать для дальнейшей обработки.
Какие инструменты помогают извлекать JSON с веб-страниц без ручного копирования?
Существуют библиотеки и утилиты, которые автоматизируют процесс. В Python популярны requests для получения страниц и BeautifulSoup для парсинга HTML. Для динамических данных используют Selenium или Playwright, которые эмулируют работу браузера и позволяют получить подгруженный JSON. В JavaScript можно применять fetch или axios для получения данных напрямую с серверных API, минуя визуальный интерфейс страницы.
Как определить, где на веб-странице хранится JSON, если он не отображается напрямую?
На страницах JSON часто внедрён внутри скриптов или загружается через сетевые запросы. Чтобы его обнаружить, можно открыть инструменты разработчика браузера (обычно клавиша F12), перейти во вкладку «Network» и обновить страницу. В списке запросов ищите ответы с типом «application/json» или с содержимым, похожим на объекты или массивы JavaScript. Кроме того, JSON может находиться внутри тегов