Как при помощи 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?
не могу. Там скрипт динамический и занимает ну просто очень, очень много текста на сжатом js. Кроме того, я столкнулся с тем, что присутствуют символы типа \x и \\u
Жаль, что в питоне нет простого парсинга JS. Я как-то не сталкивался, а теперь понял, что нужно свой какой-то велосипед изобретать.