[xParser] 1.5.0 - Полная поддержка miniShop2 и обновление записей
Наконец-то! Для многих — долгожданный релиз!
Основные нововведения:
- Поддержка товаров miniShop2 (любые свойства/опции)
- Поддержка miniShop2 галереи
- Поддержка ms2Gallery
- Возможность обновления записей
Обновление записей
Для этого при создании/редактировании задания появилась галочка (по-умолчанию, отключено).
ms2Gallery / miniShop2 галерея
Выгружать изображения в галерею, тоже, достаточно просто. Нужно лишь все изображения собрать в JSON массив при помощи Fenom. Вот таким кодом я собрал все изображения, используемые в контенте спарсенной записи, в JSON массив:
@INLINE {($content | preg_get_all : '!https?://[^"]+\.(?:jpe?g|png|gif)!Ui') | toJSON}
На выходе, компонент превращает его в обычный массив PHP и по-очереди выгружает в галерею.
Особенности работы с miniShop2 товарами
Есть ряд особенностей, которые следует соблюдать, при создании ms2 товаров при помощи xParser.
1) В конфигурации задания нужно выбрать раздел с типом «Категория товаров».
2) В полях задания нужно создать поле resource | class_key, со значением по-умолчанию: msProduct
3) Для корректной выгрузки таких полей, как tags, color, size и т.п. при создании полей задания была добавлена настройка «Раскодировать JSON строку в массив». Дело в том, что при создании товаров через процессор, miniShop2 ждет от нас PHP массив для этих полей, поэтому для корректной выгрузки такого типа полей, нужно раскодировать JSON в PHP. К примеру, вот:
msOptionsPrice2
Вот этого компонент пока не поддерживает. Будем внедрять, если найдется спонсор.
P.S.
Компонент скоро будет стоить дороже на 1-2к. Поэтому, если собираетесь покупать — сейчас самое время!
Поблагодарить автора
Отправить деньги
Комментарии: 30
Спасибо, класс!))
Я правильно понимаю суть компонента? Можно указать любой сайт в качестве источника для парсинга, скажем сайт поставщика товаров, задать какие-то соответствия, задать уровень вложенности по которому нужно искать товары и компонент сам создаст товары в магазине?
Очень примерно — правильно.
Спасибо.
Жаль что нельзя заплатить очень примерными деньгами))
Ну а если без шуток — у нас сейчас работает отдельно человек, который пишет программы парсинга индивидуально для каждого сайта. Потому, что информация на сайтах очень различается по подаче, оформлению, структуре. Где-то характеристики товаров не отображаются, пока не пролистать страницу, а потом грузятся аяксом, где-то изображения товаров это не простые ссылки — это закодированные svg файлы, которые вставляются через JS и защищены от копирования… Все это парсится в XLSX, потом вручную проверяется менеджерами и то — при импорте в minishop все проходит очень не гладко. Если кто-то все это предусмотрел в одном компоненте — я снимаю шляпу.
Жаль что нельзя заплатить очень примерными деньгами))
Ну а если без шуток — у нас сейчас работает отдельно человек, который пишет программы парсинга индивидуально для каждого сайта. Потому, что информация на сайтах очень различается по подаче, оформлению, структуре. Где-то характеристики товаров не отображаются, пока не пролистать страницу, а потом грузятся аяксом, где-то изображения товаров это не простые ссылки — это закодированные svg файлы, которые вставляются через JS и защищены от копирования… Все это парсится в XLSX, потом вручную проверяется менеджерами и то — при импорте в minishop все проходит очень не гладко. Если кто-то все это предусмотрел в одном компоненте — я снимаю шляпу.
Ещё есть Content Downloader, очень гибкий в настройках софт.
Здравствуйте! Может кто встречался с проблемой:
Создал тестовое задание на парсинг 10 ресурсов с картинками в категорию miniShop (как товар с галереей), запустил из cron — в результате, 7 ресурсов идет в категорию miniShop, как и нужно, а 3 ресурса идут как дочерние ресурсы категории miniShop — см. http://clip2net.com/s/3Pz3nrd
Как исправить?
Создал тестовое задание на парсинг 10 ресурсов с картинками в категорию miniShop (как товар с галереей), запустил из cron — в результате, 7 ресурсов идет в категорию miniShop, как и нужно, а 3 ресурса идут как дочерние ресурсы категории miniShop — см. http://clip2net.com/s/3Pz3nrd
Как исправить?
UPD: Проблема решилась, спасибо автору дополнения. Проблема была в том, что некоторые страницы были другой верстки, нежели страницы, под которые настраивался парсинг.
Павел, а получится парсить отзывы о товаре с яндекс.маркета? И вставлять их в табличку customExtra?
а получится парсить отзывы о товаре с яндекс.маркетаНу если на маркете в отзывах есть структура страницы, которая подгружается в коде страницы, то можно парсить.
И вставлять их в табличку customExtraТут сложнее. Пока не реализован функционал работы со сторонними объектами (не ресурсами). Однако, всегда можно проспонсировать доработку. Если интересно — пишите мне в ТП на modstore.
немного не понял вот эти строки:
На выходе, компонент превращает его в обычный массив PHP и по-очереди выгружает в галерею.Как всетаки заставить xparser загружать изображения в галерею? можно по-шагам. В документации не нашел тоже ничего по этому вопросу.
в общем все понятно, разобрался! полезная ссылка для модификатора preg_get_all
непонятно только что делать вот с этим делом:
непонятно только что делать вот с этим делом:
как бороться с max_execution_time лимитом при парсинге даже около ~50 страниц это занимает больше обычных 60 секунд.
Дак увеличьте в пхп этот лимит :)
либо в php.ini либо через .htaccess если у вас апачи
либо в php.ini либо через .htaccess если у вас апачи
оказалось — проще. просто запустить скрипт cron'а из консоли. тогда все лимиты времени побоку
Лимит увеличивать не нужно, это чревато плохими последствиями.
Например?
xParser работает только с ресурсами MODX?
Есть ли возможность с помощью данного компонента парсить данные в свою таблицу, чтобы не перегружать дерево ресурсов?
Есть ли возможность с помощью данного компонента парсить данные в свою таблицу, чтобы не перегружать дерево ресурсов?
Увы, сейчас такой возможности нет.
К сожалению, срок техподдержки истек, поэтому прошу ответить на вопрос — может ли xParser преобразовать относительные URL в абсолютные для их передачи из основного задания в дополнительное?
Пример относительных URL донора на полную версию новости:
Пример относительных URL донора на полную версию новости:
<a href="news-1">Новость 1</a>
вместо абсолютных:<a href="https://site.com/news-1">Новость 1</a>
При попыке выполнить задание, xParser вполне обосновано пишет в лог ошибки- PHP warning: file_get_contents(news-1): failed to open stream: No such file or directory
Это очень просто! С помощью Fenom:
@INLINE http://site.ru/{$link}
Спасибо! Не сочтите за наглость, а как можно получить значения метатегов с помощью RegExp?
Например
Например
<meta property="og:image" content="http://site.com/images/image.jpg"/>
Пишем «регулярку»<meta[^<>]*?og:image['"][^<>]*?content=['"*)*)*)*)*)[(*^<>]*?)['"]
Проверяем на валидность, все работает https://regex101.com/r/N8oNHE/1
Вставляю «регулярку» в xParser — пусто.
Сорри, но я не знаю, что это за регулярка такая. Можно ведь гораздо проще…
Друзья, кто может помочь — правильно составить XPath выражение для получения метатегов. Гугл подсказывает:
но в XPath мне так и не удалось получить значение поля content в метатеге «description» (пробовал разные вариации).
.//meta[@name='description']/@content
.//*[@name='description']/@content
но в XPath мне так и не удалось получить значение поля content в метатеге «description» (пробовал разные вариации).
Я писал в доке, что XPath парсер у либы, которая используется для обработки, кривой. Лучше юзайте RegExp:
/<meta[^>]+og:image['"]{1}[^>]+content=['"]{1}([^>]+)['"]{1}/usi
Спасибо, Павел! Больше всего не хотелось отвлекать именно вас на составление «регулярок».
Но у меня есть вопрос именно по работе xParser — при запуске задания обрабатываются (копируются) ровно 20 записей, хотя в конфигурации указано от 1 до 100 (все 100 записей в коде страницы донора есть, пагинация отсутсвует).
Проблема решается перезарузкой в браузере страницы с запущенным заданием, изменением кофикурации (указываем с 20 до 100) и повторным запуском xParser. При этом он обработает (скопируют) следующие 20 записей (с 20 по 40). В логе ошибок нет, как будто парсер просто «зависает».
Перечитал документацию, комментарии — нигде об этой особенности не упоминается. Может отработка по 20 заданий специально предусмотрена для работы через крон?
Но у меня есть вопрос именно по работе xParser — при запуске задания обрабатываются (копируются) ровно 20 записей, хотя в конфигурации указано от 1 до 100 (все 100 записей в коде страницы донора есть, пагинация отсутсвует).
Проблема решается перезарузкой в браузере страницы с запущенным заданием, изменением кофикурации (указываем с 20 до 100) и повторным запуском xParser. При этом он обработает (скопируют) следующие 20 записей (с 20 по 40). В логе ошибок нет, как будто парсер просто «зависает».
Перечитал документацию, комментарии — нигде об этой особенности не упоминается. Может отработка по 20 заданий специально предусмотрена для работы через крон?
Возможно, это просто срабатывает time limit на выполнение скрипта из веба.
Мне помогала такая настройка в файле parser.php
$modx->exec('set session wait_timeout=28800');Это если я запускал парсер через консоль.
Подскажите, пытаюсь сохранить изображение в данное поле files|ms2gallery с источником
@INLINE {($product_images | preg_get_all : '/href="([^"]+)"/') | toJSON}
При просмотре вижу массив но по какой то причине не сохраняем в чем может быть дело?
Напишите в ТП Modstore. Посмотрим, в чём дело.
Всем привет! Кто нибудь пробовал в первое задание засовывать sitemap.xml?
Пытаюсь получить ссылки, не получается
Пытаюсь получить ссылки, не получается
Почитайте доку про RSS.
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.