[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Парсинг сайта после выполнения js
artmirarmi
Здравствуйте, есть сайт в котором котором изначально происходит загрузка страницы, а потом с помощью js загружаютсся данные на страницу. Если просмотреть исходный код страницы, то данных там нет. Понятно, что они подгружаются динамически и уже на клиентской стороне.

Помогите решить эту проблему и спарсить сайт

Вот ссылка на сам сайт
https://edadeal.ru/magnitogorsk/offers
vagrand
Хех, вот жеж люди, мало того, что тырят чужую инфу, так еще и хотят чтобы кто-то научил их это делать

_____________
Senior PHP developer: PHP5, MySQL, JavaScript, CakePHP, Yii/Yii2, Zend Framework, Smarty, XML/Xslt, JQuery, Jquery Mobile, Bootstrap, ExtJS, HTML, HTML5, CSS, Linux, SVN, Git, Memcached, Redis, MongoDB, Zend Guard, Ioncube, FFMpeg, PayPal, Webmoney, Qiwi, Facebook API, Vkontakte Api, Google API, Twitter Api, Steam Api.
Junior Android Developer: Android SDK, многопоточность, работа с HTTP запросами, JSON, SQLite, фрагменты.
walerus
vagrand Ну почему же тырят?, она в свободном доступе... может ТС просто аналитик и ведет для себя скромную статистику wink.gif

По сайту - там обкурка еще та blink.gif "в лоб" решать не получится.
depp
будет стоить очень дорого. там все закодировано. глянул - декодер так и не нашел.
vagrand
depp

Там просто gzip-ом сжато

_____________
Senior PHP developer: PHP5, MySQL, JavaScript, CakePHP, Yii/Yii2, Zend Framework, Smarty, XML/Xslt, JQuery, Jquery Mobile, Bootstrap, ExtJS, HTML, HTML5, CSS, Linux, SVN, Git, Memcached, Redis, MongoDB, Zend Guard, Ioncube, FFMpeg, PayPal, Webmoney, Qiwi, Facebook API, Vkontakte Api, Google API, Twitter Api, Steam Api.
Junior Android Developer: Android SDK, многопоточность, работа с HTTP запросами, JSON, SQLite, фрагменты.
sergeiss
Цитата (artmirarmi @ 3.04.2018 - 10:52)
Если просмотреть исходный код страницы, то данных там нет. Понятно, что они подгружаются динамически и уже на клиентской стороне.

Помогите решить эту проблему и спарсить сайт

Для этого можно использовать "безоконный браузер". Например, PhantomJS. Только учти, что его поддержка прекращена smile.gif Сейчас гугл на базе своего хрома сделал подобную штуковину, т.е. безоконный браузер. Это та вещь, которую можно запустить на стороне браузера, загрузить туда страницу, позволить отработать аяксу и загрузить все данные, прорисовать их с помощью jQuery, Реакта.... Короче говоря, полностью всё отрабатывает так, как в обычном браузере - но на стороне сервера. И полученный результат можно прочитать. Например, распарсить что-либо.

Насчет окончания поддержки ФантомДжиЭс. Это было сказано на декабрьской конференции Holy JS. Я там не был, но записи выступлений смотрел/слушал.

_____________
* Хэлп по PHP
* Описалово по JavaScript
* Хэлп и СУБД для PostgreSQL

* Обучаю PHP, JS, вёрстке. Интерактивно и качественно. За разумные деньги.

* "накапливаю умение телепатии" (С) и "гуглю за ваш счет" (С)

user posted image
depp
sergeiss
проще плагин написать для того же гугл хром.
vagrand
sergeiss
depp

От вы любители пойти в обход.
Там после загрузки страницы выполняется всего лишь ajax запрос. Т.е. тупо надо его в инструментах разработчика посмотреть и самому составить такой же.

_____________
Senior PHP developer: PHP5, MySQL, JavaScript, CakePHP, Yii/Yii2, Zend Framework, Smarty, XML/Xslt, JQuery, Jquery Mobile, Bootstrap, ExtJS, HTML, HTML5, CSS, Linux, SVN, Git, Memcached, Redis, MongoDB, Zend Guard, Ioncube, FFMpeg, PayPal, Webmoney, Qiwi, Facebook API, Vkontakte Api, Google API, Twitter Api, Steam Api.
Junior Android Developer: Android SDK, многопоточность, работа с HTTP запросами, JSON, SQLite, фрагменты.
sergeiss
vagrand, я не вникал в сайт по ссылке, а ответил на вопрос smile.gif В частном случае, если там всего один запрос, то да, проще будет как ты сказал.

_____________
* Хэлп по PHP
* Описалово по JavaScript
* Хэлп и СУБД для PostgreSQL

* Обучаю PHP, JS, вёрстке. Интерактивно и качественно. За разумные деньги.

* "накапливаю умение телепатии" (С) и "гуглю за ваш счет" (С)

user posted image
depp
vagrand
а я вникал. там есть ключевое слово, которое необходимо для декода. где там gzip - я не нашел. там обычный base64 идет. для его нормального преобразования нужно подгружать с их же сервера кодовое слово.
brevis
Заголовок content-type: application/x-protobuf намекает нам, что там protobuf.

user posted image

_____________
Чатик в телеге
vagrand
depp
Цитата
там обычный base64 идет. для его нормального преобразования нужно подгружать с их же сервера кодовое слово.


Вот уж не знаю где же вы нашли там base64, но даже если и так, то для декорирования строки base64 не нужны никакие кодовые слова. Вы сильно путаете кодирование и шифрование. Та даже в функции base64_decode() нет никаких параметров для передачи ключевых слов.



_____________
Senior PHP developer: PHP5, MySQL, JavaScript, CakePHP, Yii/Yii2, Zend Framework, Smarty, XML/Xslt, JQuery, Jquery Mobile, Bootstrap, ExtJS, HTML, HTML5, CSS, Linux, SVN, Git, Memcached, Redis, MongoDB, Zend Guard, Ioncube, FFMpeg, PayPal, Webmoney, Qiwi, Facebook API, Vkontakte Api, Google API, Twitter Api, Steam Api.
Junior Android Developer: Android SDK, многопоточность, работа с HTTP запросами, JSON, SQLite, фрагменты.
killer8080
Можно сделать вывод, что protobuf значительно повышает порог вхождения парсингистов biggrin.gif
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.