[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
6
3 802
+9
Поблагодарить автора Отправить деньги

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

Виталий
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. Нужна просто загрузка, без обновления данных.
          yuri
          21 января 2021, 18:42
          0
          добрый день. вы нашли решение по парсингу категории?
      Андрей
      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 и добавить туда что угодно.

            Писал свой парсер для Алиэкспресса, столкнулся с тем, что при попытке качать несколько товаров, они отдают страницу для авторизации.
            Столкнулся с такой же проблемой в ходе тестирования компонента. Как выяснилось закрыты товары что лежат в каком либо магазине, но у такого товара всегда есть оригинальная страница с другим адресом. Так вот решилось небольшими костылями.
            Кратко: Если попытка получить контент закончилась неудачей — редирект на мобильную страницу — она всегда доступна, там выдираем ссылку на оригинальную и парсим уже ее.
            Конкретного заказчика устроило данное решение, на этом и остановились. А так если компонент будет популярен то допишу работу с проксями…
            Imran
            24 марта 2020, 20:26
            0
            Правильно ли я понимаю, что при парсинге товары сохраняются ресурсами в Modx? Можно ли использовать данный парсер для вытаскивания товаров с других сайтов на свой по дропшипингу?
              Володя
              25 марта 2020, 09:28
              0
              Правильно ли я понимаю, что при парсинге товары сохраняются ресурсами в Modx?
              да
              Можно ли использовать данный парсер для вытаскивания товаров с других сайтов на свой по дропшипингу?
              да
                Андрей
                29 октября 2020, 07:50
                0
                Добрый день. Я правильно понимаю, что нужно создать товар в админке, указать ссылку с сайта донора, нажать кнопку и тогда данные спарсятся? Сможете ли вы при покупке за дополнительную плату настроить шаблоны для разных доноров?
              yuri
              21 января 2021, 19:03
              0
              а есть возможность загрузить список ссылок для обработки, а не постранично?
                Влад
                01 декабря 2021, 01:23
                0
                Добрый день!

                Может кто-то сталкивался с необходимостью сохранения кэша всего сайта при обновлении цен через крон?

                Вопрос в возможности сбрасывать кэш непосредственно у товара
                  Николай Савин
                  01 декабря 2021, 09:28
                  0
                  Это на самом деле очень просто делается
                  Вот такой метод есть у кэш менеджера для очистки кэша конкретного ресурса (товар это же ресурс)
                  $modx->cacheManager->delete($product_id, array(xPDO::OPT_CACHE_KEY => 'resource/web/resources'))
                    Николай Савин
                    01 декабря 2021, 09:31
                    0
                    Сначала написал потом, подумал о контексте вопроса. Конкретно в обсуждаемом компоненте не видел как сбрасывается кэш, и сбрасывается ли вообще.
                  Артем
                  10 декабря 2022, 03:05
                  0
                  Здравствуйте. А компонент ещё поддерживается? И ещё: Возможен ли парсинг нескольких тысяч товаров за один проход парсера(не совсем понял, он может парсить только с конкретной карточки товара или с каталога тоже умеет?)?
                    Виноградов Тимур
                    18 сентября 2023, 11:35
                    0
                    Присоединюсь к вопросу, кто-то использовал компонент в последнее время?
                    Автор на связи?
                    Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
                    21