[OPENCART] Парсер цен конкурентов

Тема в разделе "Готовые решения", создана пользователем pomansur, 29 фев 2020.

  1. pomansur

    pomansur Member Пользователи

    Регистрация:
    26 янв 2017
    Сообщения:
    19
    Написан для ocStore 2.3.0.2.3

    Внимание: Модуль переписывает поле Jan в карточке товара, поддерживает 1 магазин.
    В название карточки товара ВАШЕГО магазина, не должны присутствовать похожие по написанию русские буквы написанные латиницей и наоборот. Tefаl Color Еdition B3884052 xром. Также страдают этим многие другие магазины, где встречается подобное, поэтому незя просто так применить регулярку.
    Где встречается у конкурента в модели кириллица, как это Tefаl Color Еdition B3884052, летит в базу с флагом fail, чтобы потом можно было подстроить поиск-замену в CD.

    Он подойдет кто имеет ассортимент, где однозначно можно идентифицировать товар по марке.
    Примеры:
    Сковорода-гриль Tefal Color Edition B3884052 => Сковородка Tefal Color Edition B3884052 антипригар
    Телевизор Samsung UE43N5570AU => Телек Samsung UE43N5570AU б/у
    Кофемашина Bosch VeroCup 100 TIS30129RW => Машина для приготовления кофе Bosch VeroCup 100 TIS30129RW черная
    Слева названия конкурента, справа у нас на сайте
    Если отбросить киррилицу из модели, идентификация не пострадает - это вся та же модель.

    Если же товар у Вас например: носовые платки из носорога 20*20см или салфетки "Огонек", нет возможности сопоставить товар с магазине и конкурента, т.к. что только не пишут в названии. (носовой платок из носорога 200*200 или платок носовой 20*20(носорог) и т.д)

    Идея состоит в том, что Content Downloader нам вытаскивает данные, приводит модель спаршенных товаров в идентичное состояние(дополнительная обработка ещё есть, если нужно в модуле в model, функции model_replace) как на сайте, и посылает post запросом в модуль.
    Модуль проверяет: что все данные пришли, содержат или не содержат кириллицы в название модели и делает постобработку спаршенной модели (если требуется) и вычисляет ее crc32(контрольную сумму) Сравнение как раз и происходит по crc32.
    Если же модель имеет кириллицу, заносит в таблицу с пометкой fail и подсвечивает похожие по написанию русские буквы, потом можно подкорректировать поиск-замену в проекте конкурента.

    Вычисление контрольной суммы товара - crc32 происходит так:
    Получили из CD вот такую строку
    Tefal Color Edition B3884052/Red
    или на сайте у нас такая
    Сковородка Tefal Color Edition B3884052/Red антипригар, надо сопоставить.
    модуль вырезает всю киррилицу, пробелы,слеши, спецсимволы, и т.д, оставляет только латиницу и цифры, подымает регистр всех знаков вверх и вычисляет контрольную сумму.

    Файл проекта CD описывать смысла нет, кто работал в нем, поймет как перестроить границы парсинга для каждого конкурента. Единственное: каждому конкуренту свое значение id
    [SET:concurent]DNS-SHOP[/SET] ▒Название Конкурента (Уник значение)
    [SET:concurent_id]6[/SET] ▒ ID Конкурента (Уник значение)
    В принципе и все. Код контроллера максимально задокументирован.

    Установка: ставим копированием файлов, обновляем модификатор, даем права, Включаем модуль Concurent`s во вкладке модули.

    Использование:
    В шапке админки справа, кликаем кнопку "Конкуренты",далее вкладка "Лог". Справа кнопка "Генерировать JAN всем товарам магазина". Нажимаем. Со стороны магазина CRC32 для товаров сгенерированны.

    Идем в CD, настраиваем проект конкурента. Тут DNS SHOP
    Нужны из парсинга 3 границы это модель и цена и категория
    Код:
    [VARF]
    [SET:concurent]DNS-SHOP[/SET] ▒Название Конкурента (Уник значение)
    [SET:concurent_id]6[/SET] ▒ ID Конкурента (Уник значение)
    [SET:site]http://site.ru/admin[/SET]▒Адрес до вашей папки admin
    [/VARF]
    ▒Чистим таблицу MYSQL с данным конкурентом
    [DOITATFIRSTDOC]<PHP_SCRIPT_2=[VARF:site]/post_comcur.php>[UTF-8]>
    <HEADERS></HEADERS>
    delete=[FIELDVALUE][VARF:concurent][/FIELDVALUE]
    </PHP_SCRIPT_2>[/DOITATFIRSTDOC]
    ▒Льем данные POST
    <PHP_SCRIPT_4=[VARF:site]/post_comcur.php>[UTF-8]>
    <HEADERS></HEADERS>
    conc_cat=[FIELDVALUE]<CD_GRAN_4!>[/FIELDVALUE]▒Категория
    conc_name=[FIELDVALUE][VARF:concurent][/FIELDVALUE]▒переменная имени конкурента
    conc_id=[FIELDVALUE][VARF:concurent_id][/FIELDVALUE]▒Переменная ID конкурента
    model_conc=[FIELDVALUE]<CD_GRAN_1!>[/FIELDVALUE]▒Модель очищенная поиском-заменой
    conc_url=[FIELDVALUE]<CD_DOCURL!>[/FIELDVALUE]▒url страницы конкурента с товаром
    price_conc=[FIELDVALUE]<CD_GRAN_2!>[/FIELDVALUE]▒Цена конкурента
    </PHP_SCRIPT_4>
    
    <CD_GRAN_1!> - модель очищенная поиском замены в программе
    <CD_GRAN_2!> - цена
    <CD_GRAN_4!> - категория
    Во избежание недоразумений, post_comcur.php в проекте и сам файл модуля переименовать во что то мало выговариваемое. Он ловит снаружи POST запросы, хотя они и очищаются движком, мало -ли.
    Если настроено верно, увидим вот это в админке
    Снимок.PNG 2.PNG 3.PNG 4.PNG
    дальше по аналогии....
    Добавляем конкурентов в СD, настраиваем планировщик.
    Во вложении Content_downloader_проект.zip - Проект для CD для магазина DNS-SHOP,настроен на рубрику сплит-системы.
     

    Вложения:

    kadishev1997, kagorec и Root нравится это.
  2. Root

    Root Администратор Администратор

    Регистрация:
    10 мар 2010
    Сообщения:
    14.818
    Город:
    Барнаул
    Спасибо!
     
  3. pomansur

    pomansur Member Пользователи

    Регистрация:
    26 янв 2017
    Сообщения:
    19
    Это вам спасибо, адаптер не сложно делать
     
  4. putnik

    putnik New Member Пользователи

    Регистрация:
    12 окт 2021
    Сообщения:
    4
    Ого.. интересно
     

Поделиться этой страницей