JawsIk
@JawsIk
Python Django, Lua, ЧПУ-станки(ArtCam, Aspire)

Как при помощи python выдернуть JSON из JavaScript, который в HTML?

Суть такая. Пришёл заказ на парсер для сайта. Всё вроде бы отследил, как, чего и в какой последовательности. Данные загружаются через AJAX динамически при скролле. С перехватом этих данных тоже нет сложности, но вот сами данные представляют собой жуткую кашу. А именно делается запрос через POST и на этот запрос отдаётся целая HTML страница. В этой странице есть целых 7 встроенных JavaScript-ов. Грузятся они в разнобой с разной последовательностью (видимо такая примитивная защита от парсинга). В одном из скриптов, есть переменная contentData, в виде JSON. В нём много всего и в том числе те, данные которые собственно и нужны клиенту. В другом JS-скрипте, есть ещё одна переменная и она тоже в виде JSON (словарика), в котором есть некий ID, для подгрузки следующей страницы данных.

Мой алгоритм (который я вижу) следующий:
1. Скачиваю HTML
2. Через BS4 выдёргиваю все теги "script"
3. Путём перебора нахожу скрипт, в котором лежит нужная переменная-JSON
4. Из этого скрипта выдёргиваю первый словарь
5. Беру с него данные, пишу в CSV
6. Путём перебора, можно в том же цикле, нахожу скрипт со второй переменной-JSON
7. Беру из него данные, формирую ссылку и погнали заново...

И вот во всём этом алгоритме возникли сложности с пунктами 3-4 и 6-7.

И если я и смогу через банальный поиск или через регулярку в тексте скрипта найти название переменной (п.3 или 6), то вот как из кода JS выдернуть JSON ума не приложу.

Вот в коде написано var contentData = {...[{...[{...}]...}]...}

Как мне этот "contentData" взять из JS , да и запихнуть в питоний JSON?

Надеюсь, понятно объяснил.
  • Вопрос задан
  • 166 просмотров
Пригласить эксперта
Ответы на вопрос 1
@GeneD88
QA
Ну как, вы можете выдернуть contentData из скрипта, используя regex
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы