Для новичков Парсер Яндекс Маркет за 30 минут с помощью ZennoPoster

ibred

Client
Регистрация
04.04.2015
Сообщения
3 835
Реакции
3 564
Баллы
113
yamarket1_head.jpg



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

head.jpg


Представьте сколько Вы потратили бы времени и денег, делая это всё вручную или делегируя такую
работу фрилансерам? И то, и другое требует постоянных инвестиций т.к. данная работа циклична, но
с помощью ZennoPoster Вы можете решить все вопросы с минимальными
затратами, не прибегая к помощи программистов
.

Парсинг – это обработка информации по определённому алгоритму. То, что человек делает за
несколько дней по сбору и обработке информации, парсер выполнит весь объем работы, пока Вы будете
пить чашку чая.


Чаще всего парсинг интернет магазинов вызывает недоумение у начинающих вебмастеров, ведь
звучит так сложно и непонятно, что приводит к тратам на программы или скрипты, работающим по
задумкам автора (разработчика) и не имеющим тех или инных функций, необходимых именно Вам.

Благодаря ZennoPoster Вы сможете создать собственный парсер, который будет работать так как Вы
захотите, без программистов, регистраций и смс всего за 30 минут. Не верите? Читайте дальше!


 
Последнее редактирование:
В статье используется 2 метода:
  • Поиск элементов через конструктор действий с регулярными выражениями
  • XPath
Шаблоны находятся в теле статьи, в самом низу.
 
  • Спасибо
Реакции: barkasian и Range8Hero
В статье используется 2 метода:
  • Поиск элементов через конструктор действий с регулярными выражениями
  • XPath
Шаблоны находятся в теле статьи, в самом низу.

Статья огонь!
В продвинутом методе после перехода на след. страницу нужно подправить, - счетчик Counter0 обнулять.
После парсинга первой страницы, последующие парсить не будет, т.к. {-Variable.Counter0-}<{-Variable.count-}-1
 
  • Спасибо
Реакции: ibred
Статья огонь!
В продвинутом методе после перехода на след. страницу нужно подправить, - счетчик Counter0 обнулять.
После парсинга первой страницы, последующие парсить не будет, т.к. {-Variable.Counter0-}<{-Variable.count-}-1
Действительно. Спасибо за наблюдательность!
Обновил шаблоны (добавлена версия 1.1 на Яндекс Диск).

Так же Яндекс Маркет немного мудрит с версткой и вариант подсчёта элементов уже не работает:
C#:
Развернуть Свернуть Копировать
return instance.ActiveTab.FindElementsByAttribute("div", "class", "n-snippet-card2 b-zone i-bem", "regexp").Count;

Поэтому данная конструкция заменена на эту:
C#:
Развернуть Свернуть Копировать
return instance.ActiveTab.FindElementsByAttribute("div", "data-id", "model-", "regexp").Count;
 
  • Спасибо
Реакции: Range8Hero и barkasian
Вот ещё одно интересное решение, которое позволит не щелкать по SELECT с целью изменения количества отображаемых товаров на странице.

Как выяснилось, при выборе одного из значений "Показывать по X" товаров, в браузер пишется кука yandexmarket, где значением выступает их кол-во.
Всё, что нам нужно, это выполнить код после загрузки страницы и перезагрузить её:
C#:
Развернуть Свернуть Копировать
string cookie = instance.GetCookie("yandex.ru"); // Получаем куки Яндекс Маркета
string yamarket_cookie = Regex.Match(cookie, @"\.market.yandex.ru(\s+).*yandexmarket(\s+)\d{2}[^r\n]+").Value; // Забираем куку yandexmarket, ответственную за кол-во позиций на странице
yamarket_cookie = System.Text.RegularExpressions.Regex.Replace(yamarket_cookie, @"(?<=yandexmarket(\s+))\d{2}", "24"); // Заменяем значение на 24
instance.SetCookie(yamarket_cookie); // Устанавливаем новую куку в браузер

Или выполнить такой код прямо перед загрузкой страницы:
C#:
Развернуть Свернуть Копировать
instance.SetCookie(@".market.yandex.ru    TRUE    /    FALSE    05/18/2033 06:33:20    yandexmarket    24    FALSE    TRUE");
 
Последнее редактирование:
  • Спасибо
Реакции: Range8Hero
Впервые захотелось подписаться на уведомления о новых записях на каком-то сайте... а такой возможности нет... :(
 
Впервые захотелось подписаться на уведомления о новых записях на каком-то сайте... а такой возможности нет... :(
Да, действительно, не мешало бы сделать возможность подписки на новинки.
 
Впервые захотелось подписаться на уведомления о новых записях на каком-то сайте... а такой возможности нет... :(
Да, действительно, не мешало бы сделать возможность подписки на новинки.
Пока что можете подписаться на раздел: http://zennolab.com/discussion/forums/blog.206/watch
Чуть позже появится возможность подписки по всем популярным каналам :)
 
  • Спасибо
Реакции: one
На зеннолабе есть блог ? O_o
 
Теперь да )
 
  • Спасибо
Реакции: Acekoff
За описание кодом отдельный лайк, пойду потрошить проекты.
 
Прочитал вскользь, возможно уже написали, а я проморгал, не пинайте :-)
Сам буквально месяц назад парсил маркет, раздел телефоны, тут есть пара нюансов:
1) Что бы спарсить реально все модели, надо снять галочку "в продаже" http://joxi.ru/ZrJ08RNU178Za2 (в url параметр onstock=0 )
2) Самое главное - столкнулся с интересной защитой, после перехода на 40-50 страницу (по 12 моделей на стр.) маркет начинает отдавать одни и те-же модели. Проверял не только на собственной машине, но и у коллег. Зенка тоже простым перебором страниц не собирает больше 600-900 моделей из более 10к http://joxi.ru/l2ZQaG1I8nXM1m
Примеры: http://joxi.ru/a2XGdgxcyO3K6m , http://joxi.ru/nAyMEDBuXnDv7A , http://joxi.ru/Dr8O0pvFkb9YGA
Обошёл защиту - перебором производителей. Т.е. сначала парсим apple, потом самсунг и т.д.
При таком подходе почти ни у одного производителя нет необходимости переходить более чем на 40 страниц.
 
Последнее редактирование:
  • Спасибо
Реакции: Advert31337
тяжёлый туториал для новичка - т.к. не понятно, что нажимать

вот словил затык - нет выбора опции https://i.imgur.com/H0Uq8xv.png
(в исходном - "временные... данные")
 
тяжёлый туториал для новичка - т.к. не понятно, что нажимать

вот словил затык - нет выбора опции https://i.imgur.com/H0Uq8xv.png
(в исходном - "временные... данные")
Буду стараться писать подробнее, благодарю за замечание.
Нужно создать список, чтобы можно было его выбрать из выпадающего меню.
Вы можете скачать готовый проект в конце статьи и посмотреть, как всё сделано, а далее соотнести шаги с блоками.
 
  • Спасибо
Реакции: ezodoc
Прочитал вскользь, возможно уже написали, а я проморгал, не пинайте :-)
Сам буквально месяц назад парсил маркет, раздел телефоны, тут есть пара нюансов:
1) Что бы спарсить реально все модели, надо снять галочку "в продаже" http://joxi.ru/ZrJ08RNU178Za2 (в url параметр onstock=0 )
2) Самое главное - столкнулся с интересной защитой, после перехода на 40-50 страницу (по 12 моделей на стр.) маркет начинает отдавать одни и те-же модели. Проверял не только на собственной машине, но и у коллег. Зенка тоже простым перебором страниц не собирает больше 600-900 моделей из более 10к http://joxi.ru/l2ZQaG1I8nXM1m
Примеры: http://joxi.ru/a2XGdgxcyO3K6m , http://joxi.ru/nAyMEDBuXnDv7A , http://joxi.ru/Dr8O0pvFkb9YGA
Обошёл защиту - перебором производителей. Т.е. сначала парсим apple, потом самсунг и т.д.
При таком подходе почти ни у одного производителя нет необходимости переходить более чем на 40 страниц.

Делаю парсинг стиральных машин по производителям, но всёравно попадаются такие где в выдаче сталкиваюсь с лимитом, есть идеи как их взять все?
 

Кто просматривает тему: (Всего: 0, Пользователи: 0, Гости: 0)