@WebEditor

Парсинг — Как получить подкатегории если они подгружаются при помощи js?

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

vrOPm.png

Подскажите каким способом получить все подкатегории ?

P.S.: в итоге нужно получить многомерный массив.
  • Вопрос задан
  • 3300 просмотров
Решения вопроса 1
KorsaR-ZN
@KorsaR-ZN
api.ricardo.ch вам в помощь, SystemService, а из него getCategories. Он доступен без получения ключа.

Если не секрет, а для какой Вам у цели?
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
Petroveg
@Petroveg
Миром правят маленькие с#@&ки
Поскольку вы не имеете никакого отношения к сайту, а на запрос с чужого домена возвращается 404, то серверное решение для вас ИМХО закрыто.

Клиентское также, поскольку парсить документ с другого домена не получится — политика происхождения не позволит.

Остаётся только прокликать все пункты, которые приводят к загрузке, потом скопировать полученную в итоге структуру (анализатор в браузере) и парсить уже её.
Как вы будете решать задачу с кликами? Например, программа-кликер просто по координатам, но это муторно и непонятно как сделать.

Вам поможет Greasemonkey. Обрабатываем клики по ссылкам в цикле. Можно использовать jQuery синтаксис, проверено на этом сайте.

// ==UserScript==
// @name        test
// @namespace   html
// @description Grabbing categories
// @include     https://www.ricardo.ch/verkaufen/verkaufsformular/schritt1?src=btn_header_verkaufen&SSL=ON
// @version     1
// @grant       none
// ==/UserScript==

$(function () {
	var links = $('#navCatLvl1 a');
	links.each(function () {
		var $link = $(this);

		$link.trigger('click');
		//нашли загруженный контент (Mutation Observer) и поехали в нём по циклу
	});
});
Ответ написан
AMar4enko
@AMar4enko
Загружаем сайт, открываем девелоперскую панель хрома, идем в Network.
Щелкаем на пункте меню - видим запрос. Правой кнопкой на него, Сopy as CURL.
Вставляем в командную строку с установленным CURL. Запускаем. Получаем HTML следующего уровня меню.
Для разбора используем phpQuery, например.
Подбираем параметры запроса, пишем простенький парсер, запускаем - вуаля.

Парсер, написанный на Ruby за 40 минут, которые ушли на то, чтобы подобрать нужные задержки между запросами, чтобы сервер не блокировал: pastebin.com/69yDgMaz
Резальтат работы парсера: https://dl.dropbox.com/s/xq2wg3h13zns9ph/categorie...
Для того, чтобы полностью спарсить дерево категорий, понадобилось 997 запросов.
Ответ написан
Ваш ответ на вопрос

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

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