Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Несколько вопросов по парсингу. (https://javascript.ru/forum/misc/69186-neskolko-voprosov-po-parsingu.html)

IvanRsn 04.06.2017 13:56

Несколько вопросов по парсингу.
 
Здравствуйте, уважаемые.
Получил тут задание спарсить некоторые данные с одного сайта. Для конкретики приведу частично задачу:
Задан товар:
http://www.walmart.com/ip/Danskin-No...-Shoe/51630300
1) Найти все варианты данного товара (цвет-размер).
а.Найти наличие на складе каждого варианта,
b. Найти цену для каждого варианта.
Сложность в том, что цена и количество товара на складе изменяется, при выборе другого размера или цвета, а при детальном исследовании я обнаружил, с помощью DevTools Chrome, что при выборе, скажем, другого размера, никакой запрос к серверу не отправляется, ни GET ни POST. Отсюда первый вопрос:

Вопрос 1: Можно ли как-то получать инфу от БД не отправляя дополнительных запросов серверу?

Далее я пытался разобраться с тем, что же происходит непосредственно в JS при изменении цвета или смене размера, и тут столкнулся со второй сложностью, все подключенные к сайту скрипты минимизированы. Весь JS код расположен в одну строку и являет собой не читабельную кашу из 1-2 символьных имён функций и переменных.

Вопрос 2: Как разобраться в таком адском минимизированном коде?

Пробовал скачивать страницу целиком и в скачанных скриптах преобразовывать код при помощи специальной он-лайн утилитки, которая более менее возвращает формат JS тексту, но что-то не заработало.

И наконец

Вопрос 3: Как можно имитировать поведение пользователя на сайте. К примеру клик по раскрывающемуся списку с размерами товара и дальнейший выбор размера. Или имитировать выбор цвета продукта?
Ведь сам парсер-то будет писаться на PHP, а он не в состоянии влиять на дальнейшие клиентские JS события. Как-то можно было бы выкрутиться, если бы были запросы на сервер и ответы в JSON или скажем XML, но ничего такого не происходит.
Прошу, помогите разобраться. У меня разрушен мозг.

laimas 04.06.2017 14:10

Цитата:

Сообщение от IvanRsn
Можно ли как-то получать инфу от БД не отправляя дополнительных запросов серверу?

Нет.
Цитата:

Сообщение от IvanRsn
Как разобраться в таком адском минимизированном коде?

Отформатировать в отладчике.

Alexandroppolus 05.06.2017 12:07

Цитата:

Сообщение от IvanRsn
Вопрос 3: Как можно имитировать поведение пользователя на сайте. К примеру клик по раскрывающемуся списку с размерами товара и дальнейший выбор размера. Или имитировать выбор цвета продукта?
Ведь сам парсер-то будет писаться на PHP, а он не в состоянии влиять на дальнейшие клиентские JS события. Как-то можно было бы выкрутиться, если бы были запросы на сервер и ответы в JSON или скажем XML, но ничего такого не происходит.
Прошу, помогите разобраться. У меня разрушен мозг.

Прежде всего надо попытаться отремонтировать мозг.

Цитата:

Сообщение от IvanRsn
Сложность в том, что цена и количество товара на складе изменяется, при выборе другого размера или цвета, а при детальном исследовании я обнаружил, с помощью DevTools Chrome, что при выборе, скажем, другого размера, никакой запрос к серверу не отправляется, ни GET ни POST.

значит, они уже есть на клиенте. Либо спрятаны где-то на самой странице (см. "исходный код страницы"), либо подтянулись аяксом. Продолжай копать в глубину.

Вот они, ботинки. Думаю, тут всё есть, и цвет, и количества, и т.д.
https://www.walmart.com/product/grou...//5YH558L81GQQ
Если у тебя нет браузерного плагина JSONView, то лучше этот аяксовый запрос смотреть в дебаггере )


Часовой пояс GMT +3, время: 05:50.