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

ibred

Administrator
Команда форума
Регистрация
04.04.2015
Сообщения
2 869
Благодарностей
2 223
Баллы
113



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

head.jpg


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

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


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

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


 

Для запуска проектов требуется программа ZennoPoster.
Это основное приложение, предназначенное для выполнения автоматизированных шаблонов действий (ботов).
Подробнее...

Для того чтобы запустить шаблон, откройте программу ZennoPoster. Нажмите кнопку «Добавить», и выберите файл проекта, который хотите запустить.
Подробнее о том, где и как выполняется проект.

Последнее редактирование:

ibred

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

barkasian

Client
Регистрация
03.12.2014
Сообщения
125
Благодарностей
121
Баллы
43
В статье используется 2 метода:
  • Поиск элементов через конструктор действий с регулярными выражениями
  • XPath
Шаблоны находятся в теле статьи, в самом низу.
Статья огонь!
В продвинутом методе после перехода на след. страницу нужно подправить, - счетчик Counter0 обнулять.
После парсинга первой страницы, последующие парсить не будет, т.к. {-Variable.Counter0-}<{-Variable.count-}-1
 
  • Спасибо
Реакции: ibred

ibred

Administrator
Команда форума
Регистрация
04.04.2015
Сообщения
2 869
Благодарностей
2 223
Баллы
113
Статья огонь!
В продвинутом методе после перехода на след. страницу нужно подправить, - счетчик 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

ibred

Administrator
Команда форума
Регистрация
04.04.2015
Сообщения
2 869
Благодарностей
2 223
Баллы
113
Вот ещё одно интересное решение, которое позволит не щелкать по 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

nibiruanchild

Client
Регистрация
28.02.2015
Сообщения
133
Благодарностей
234
Баллы
43
Впервые захотелось подписаться на уведомления о новых записях на каком-то сайте... а такой возможности нет... :(
 

one

Client
Регистрация
22.09.2015
Сообщения
5 316
Благодарностей
894
Баллы
113
Впервые захотелось подписаться на уведомления о новых записях на каком-то сайте... а такой возможности нет... :(
Да, действительно, не мешало бы сделать возможность подписки на новинки.
 

ibred

Administrator
Команда форума
Регистрация
04.04.2015
Сообщения
2 869
Благодарностей
2 223
Баллы
113
Впервые захотелось подписаться на уведомления о новых записях на каком-то сайте... а такой возможности нет... :(
Да, действительно, не мешало бы сделать возможность подписки на новинки.
Пока что можете подписаться на раздел: http://zennolab.com/discussion/forums/blog.206/watch
Чуть позже появится возможность подписки по всем популярным каналам :-)
 
  • Спасибо
Реакции: one

Mahno

Client
Регистрация
16.05.2015
Сообщения
391
Благодарностей
79
Баллы
28
На зеннолабе есть блог ? o_O
 

nuaru

Administrator
Команда форума
Регистрация
14.01.2009
Сообщения
3 519
Благодарностей
2 113
Баллы
113
Теперь да )
 
  • Спасибо
Реакции: Acekoff

Advert31337

Client
Регистрация
18.12.2016
Сообщения
40
Благодарностей
29
Баллы
18
За описание кодом отдельный лайк, пойду потрошить проекты.
 

Леший

Client
Регистрация
03.02.2017
Сообщения
23
Благодарностей
1
Баллы
3
Прочитал вскользь, возможно уже написали, а я проморгал, не пинайте :-)
Сам буквально месяц назад парсил маркет, раздел телефоны, тут есть пара нюансов:
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

ezodoc

Client
Регистрация
01.11.2018
Сообщения
10
Благодарностей
0
Баллы
1
тяжёлый туториал для новичка - т.к. не понятно, что нажимать

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

ibred

Administrator
Команда форума
Регистрация
04.04.2015
Сообщения
2 869
Благодарностей
2 223
Баллы
113
тяжёлый туториал для новичка - т.к. не понятно, что нажимать

вот словил затык - нет выбора опции https://i.imgur.com/H0Uq8xv.png
(в исходном - "временные... данные")
Буду стараться писать подробнее, благодарю за замечание.
Нужно создать список, чтобы можно было его выбрать из выпадающего меню.
Вы можете скачать готовый проект в конце статьи и посмотреть, как всё сделано, а далее соотнести шаги с блоками.
 
  • Спасибо
Реакции: ezodoc

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