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

Discussion in 'Блог' started by ibred, Nov 6, 2017.

  1. ibred

    ibred Administrator

    Joined:
    Apr 4, 2015
    Messages:
    2,153
    Likes Received:
    1,629
    [​IMG]


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

    head.jpg

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

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


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

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


     
    Last edited: May 24, 2018
    Nike59, Kare, Advert31337 and 7 others like this.
  2. ibred

    ibred Administrator

    Joined:
    Apr 4, 2015
    Messages:
    2,153
    Likes Received:
    1,629
    В статье используется 2 метода:
    • Поиск элементов через конструктор действий с регулярными выражениями
    • XPath
    Шаблоны находятся в теле статьи, в самом низу.
     
    barkasian and Range8Hero like this.
  3. barkasian

    barkasian Client

    Joined:
    Dec 3, 2014
    Messages:
    120
    Likes Received:
    107
    Статья огонь!
    В продвинутом методе после перехода на след. страницу нужно подправить, - счетчик Counter0 обнулять.
    После парсинга первой страницы, последующие парсить не будет, т.к. {-Variable.Counter0-}<{-Variable.count-}-1
     
    ibred likes this.
  4. ibred

    ibred Administrator

    Joined:
    Apr 4, 2015
    Messages:
    2,153
    Likes Received:
    1,629
    Действительно. Спасибо за наблюдательность!
    Обновил шаблоны (добавлена версия 1.1 на Яндекс Диск).

    Так же Яндекс Маркет немного мудрит с версткой и вариант подсчёта элементов уже не работает:
    Code (csharp):
    1. return instance.ActiveTab.FindElementsByAttribute("div", "class", "n-snippet-card2 b-zone i-bem", "regexp").Count;
    Поэтому данная конструкция заменена на эту:
    Code (csharp):
    1. return instance.ActiveTab.FindElementsByAttribute("div", "data-id", "model-", "regexp").Count;
     
    Range8Hero and barkasian like this.
  5. ibred

    ibred Administrator

    Joined:
    Apr 4, 2015
    Messages:
    2,153
    Likes Received:
    1,629
    Вот ещё одно интересное решение, которое позволит не щелкать по SELECT с целью изменения количества отображаемых товаров на странице.

    Как выяснилось, при выборе одного из значений "Показывать по X" товаров, в браузер пишется кука yandexmarket, где значением выступает их кол-во.
    Всё, что нам нужно, это выполнить код после загрузки страницы и перезагрузить её:
    Code (csharp):
    1. string cookie = instance.GetCookie("yandex.ru"); // Получаем куки Яндекс Маркета
    2. string yamarket_cookie = Regex.Match(cookie, @"\.market.yandex.ru(\s+).*yandexmarket(\s+)\d{2}[^r\n]+").Value; // Забираем куку yandexmarket, ответственную за кол-во позиций на странице
    3. yamarket_cookie = System.Text.RegularExpressions.Regex.Replace(yamarket_cookie, @"(?<=yandexmarket(\s+))\d{2}", "24"); // Заменяем значение на 24
    4. instance.SetCookie(yamarket_cookie); // Устанавливаем новую куку в браузер
    Или выполнить такой код прямо перед загрузкой страницы:
    Code (csharp):
    1. instance.SetCookie(@".market.yandex.ru    TRUE    /    FALSE    05/18/2033 06:33:20    yandexmarket    24    FALSE    TRUE");
     
    Last edited: Nov 8, 2017
    Range8Hero likes this.
  6. nibiruanchild

    nibiruanchild Client

    Joined:
    Feb 28, 2015
    Messages:
    132
    Likes Received:
    227
    Впервые захотелось подписаться на уведомления о новых записях на каком-то сайте... а такой возможности нет... :(
     
  7. one

    one Client

    Joined:
    Sep 22, 2015
    Messages:
    4,816
    Likes Received:
    810
    Да, действительно, не мешало бы сделать возможность подписки на новинки.
     
  8. ibred

    ibred Administrator

    Joined:
    Apr 4, 2015
    Messages:
    2,153
    Likes Received:
    1,629
    Пока что можете подписаться на раздел: http://zennolab.com/discussion/forums/blog.206/watch
    Чуть позже появится возможность подписки по всем популярным каналам :-)
     
    one likes this.
  9. Mahno

    Mahno Client

    Joined:
    May 16, 2015
    Messages:
    314
    Likes Received:
    68
    На зеннолабе есть блог ? o_O
     
  10. nuaru

    nuaru Administrator Staff Member

    Joined:
    Jan 14, 2009
    Messages:
    3,397
    Likes Received:
    2,016
    Теперь да )
     
    Acekoff likes this.
  11. Advert31337

    Advert31337 Client

    Joined:
    Dec 18, 2016
    Messages:
    36
    Likes Received:
    27
    За описание кодом отдельный лайк, пойду потрошить проекты.
     
  12. Леший

    Леший Client

    Joined:
    Feb 3, 2017
    Messages:
    23
    Likes Received:
    1
    Прочитал вскользь, возможно уже написали, а я проморгал, не пинайте :-)
    Сам буквально месяц назад парсил маркет, раздел телефоны, тут есть пара нюансов:
    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 страниц.
     
    Last edited: Jan 14, 2018
    Advert31337 likes this.
  13. ezodoc

    ezodoc Новичок

    Joined:
    Nov 1, 2018
    Messages:
    10
    Likes Received:
    0
    тяжёлый туториал для новичка - т.к. не понятно, что нажимать

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

    ibred Administrator

    Joined:
    Apr 4, 2015
    Messages:
    2,153
    Likes Received:
    1,629
    Буду стараться писать подробнее, благодарю за замечание.
    Нужно создать список, чтобы можно было его выбрать из выпадающего меню.
    Вы можете скачать готовый проект в конце статьи и посмотреть, как всё сделано, а далее соотнести шаги с блоками.
     
    ezodoc likes this.

Пользователи просматривающие тему (Пользователей: 0, Гостей: 0)