[ResourceGrabber] - парсинг данных по ссылке.

[ResourceGrabber] — Компонент реализует функционал парсинга данных по ссылке.
За сравнительно короткий промежуток времени позволяет скопировать большой объем данных с одного сайта на другой. Чтобы упростить процесс, предусмотрены специальные сниппеты, позволяющие получать нужную вам информацию. Может применяться как для всего контента, так и для определенного: картинки, текст и т.д.


Особенности
— интеграция с miniShop2 (создание/ обновление товаров) мин. версия 2.4.0
— интеграция с CurrencyRate. (модификация цен)
— интеграция с msOptionSeller (задание опции Магазин товара minishop2)

Демо
Протестировать дополнение на демо сайте
Документация docs.modx.pro/components/resourcegrabber/
Купить дополнение в modstore.pro


Установка
— Подключите наш репозиторий
— Установите miniShop2 — это магазин на основе которого реализован функционал магазина
— Установите ResourceGrabber

Для тестирования можно использовать наш хостинг, на нём эти дополнения можно выбрать прямо при создании сайта.

Настройка
Перечислить шаблоны для которых нужно активировать функционал — настройка working_templates

Сниппеты
Создать сниппет для парсинга данных. В комплекте сниппет для сайта aliexpress в папке
core/components/resourcegrabber/snippets/aliexpress/product.inc
Вы можете создать сниппет для своих нужд по аналогии.

Cron
Для обновления ресурсов можно использовать скрипт для cron, пример в папке
core/components/resourcegrabber/cron/update.php

PS. Всем спасибо за внимание!

Протестировать дополнение на демо сайте
Купить дополнение в modstore.pro
Володя
20 июня 2018, 10:17
modx.pro
5
1 776
+9
Поблагодарить автора Отправить деньги

Комментарии: 11

Виталий
20 июня 2018, 13:33
+1
Спасибо Володе, компонент вышел отличный.
Во-первых, юзабилити, требуется минимум действий при непосредственной работе, много приятных автоматических мелочей, горячие клавиши. В общем рутины по-минимуму.
Во-вторых, граббер легко расширяемый, гибкий. Там идёт сразу сниппет для парсинга Али, но по его аналогии можно сделать сниппет для чего угодно, синтаксис простой, на выбор xpath или css-подобный (используется хорошо документированный domCrawler). Там же, в сниппете, легко добавить любое количество полей (главное чтобы они были у товара, т.е. поля, TV или свойства), куда данные потом сохранятся.
Мне, в основном дизайнеру, а не программисту было не особо сложно разобраться и сделать ещё несколько своих сниппетов.
    mekirile
    21 июня 2018, 12:56
    0
    1. Возможно ли настроить парсер на категорию? Чтобы сразу несколько товаров парсилось?
    2. Возможно ли сделать так, что если товак по ссылке стал недоступен, то и на моем сайте он тоже становился неактивным?
      Володя
      21 июня 2018, 13:09
      +2
      1. Возможно ли настроить парсер на категорию? Чтобы сразу несколько товаров парсилось?
      теоретически да, можно. В сниппете собрать ссылки на все продукты и для каждой ссылки создать объект GrabData, в дальнейшем на крон такие объекты обновить. В реальном времени не выйдет, так как будет занимать много времени и запрос отвалится.
      То есть компонент в админке заточен под создание/ обновление одного ресурса.
      А программно можно конечно уже реализовать разные сценарии. Можно например пройтись по сайтмапу нужного сайта и выполнить создание GrabData для каждой ссылки. При обновлении GrabData — обновится привязанный ресурс.

      2. Возможно ли сделать так, что если товак по ссылке стал недоступен, то и на моем сайте он тоже становился неактивным?
      да, можно. В сниппете например
      // если не получена цена снимаем публикацию
      $published = $price ? 1 : 0;
      
      return array(
          'published'                => $published,
          'pagetitle'             => $title,
          //...
      );
        Кирилл
        30 июля 2019, 12:52
        0
        1. Можете ли дописать под заказ парсер товаров с другого сайт из категории? При условии что дам категорию или URL страниц из категорий.
        2. Нужна просто загрузка, без обновления данных.
      Андрей
      21 июня 2018, 22:56
      0
      Чем лучше xParser?
        Володя
        22 июня 2018, 14:13
        0
        Не приходилось пользоваться xParser, так что не могу сказать чем лучше/ хуже.
        Вы можете протестировать пакет на демо сайте и написать свое мнение.
        Спасибо!
        mekirile
        26 июля 2018, 13:30
        0
        Скачал, установил. Указал id шаблона. Ничего не появилось. На демо-сайте в админке вообще ни сниппета никакого нет, ни настройки посмотреть.

        Можно чуть подробнее разжевать, как сделать, чтобы появилась форма для ввода исходных данных для парсинга?
          Володя
          26 июля 2018, 14:00
          +1
          Можно чуть подробнее разжевать, как сделать, чтобы появилась форма для ввода исходных данных для парсинга?


          у вас старая версия minishop2, потому и нет ничего. Мой косяк, совсем забыл про это. Добавил в описание.
          По поводу возврата средств за дополнение обратитесь в чат на сайте магазина.
          Извините за данный недочет.

          Спасибо!
            mekirile
            26 июля 2018, 14:02
            0
            Спасибо, всё быстро решили в Скайпе. Никаких проблем.
          Fedor Gorozhanko
          29 июля 2018, 01:55
          0
          Писал свой парсер для Алиэкспресса, столкнулся с тем, что при попытке качать несколько товаров, они отдают страницу для авторизации. Приходилось использовать прокси и прочие костыли. В этом компоненте предусмотрено что-то подобное?
            Володя
            29 июля 2018, 11:10
            0
            В этом компоненте предусмотрено что-то подобное?
            нет, в текущей реализации нет работы с прокси. Вы можете расширить базовый класс rgContentGetter и добавить туда что угодно.

            Писал свой парсер для Алиэкспресса, столкнулся с тем, что при попытке качать несколько товаров, они отдают страницу для авторизации.
            Столкнулся с такой же проблемой в ходе тестирования компонента. Как выяснилось закрыты товары что лежат в каком либо магазине, но у такого товара всегда есть оригинальная страница с другим адресом. Так вот решилось небольшими костылями.
            Кратко: Если попытка получить контент закончилась неудачей — редирект на мобильную страницу — она всегда доступна, там выдираем ссылку на оригинальную и парсим уже ее.
            Конкретного заказчика устроило данное решение, на этом и остановились. А так если компонент будет популярен то допишу работу с проксями…
            Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
            11