К содержанию

[xParser] 1.6.0 Асинхронная работа и полноценный xPath


С версии 1.6.0 компонент:
  1. Поддерживает асинхронную выгрузку изображений, благодаря библиотеке ReactPHP. Разница в скорости парсинга до 3.5 раз.
  2. Имеет полноценную поддержку xPath, благодаря библиотеке DomCrawler. Раньше использовалась QueryPath, у которой косячный xPath, было много жалоб.
P.S. Обновление протестировано, насколько это возможно. Тем не менее, если возникнут проблемы после обновления — пишите!
Павел Гвоздь
Павел Гвоздь
31 марта 2018, 21:46
modx.pro
3 032
Поблагодарить автора Отправить деньги
Реклама

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

Андрей
Андрей Старожил
03 апреля 2018, 12:49
Синтаксис xPath теперь при использовании новой библиотеки изменился?
Влад
Влад Старожил
05 апреля 2018, 14:13
Блин год валялся компонент вот только добрался и не могу в тикеты отписать! в итоге настроил тестовый парсинг на опенсервере и на хостинге и в обоих случаях больше половины картинок не парсятся (так же которые со сторонних сайтов на доноре подтягиваются) в итоге парсинг «не заканчивается» — зависает, но ресурсы создаются с вышеупомянутыми проблемами!
В консоле такой вывод:
[2018-04-05 13:57:51] (ERROR @ X:\SERVER\OSPanel\domains\iskatel\core\model\phpthumb\modphpthumb.class.php : 121) phpThumb was unable to generate a thumbnail for: X:\SERVER\OSPanel\domains\iskatel\core\cache\phpthumb\iskatel__srce6e02ff9c92e250c09f3896062ecf2a7_par0ba78bb0326502335f8683fdf331013a_dat0.jpeg
[2018-04-05 13:57:51] (ERROR @ X:\SERVER\OSPanel\domains\iskatel\core\model\phpthumb\modphpthumb.class.php : 133) Error outputting thumbnail:
OutputThumbnail() failed because !is_resource($this->gdimg_output) in file "phpthumb.class.php" on line 618
    Андрей
    Андрей Старожил
    05 апреля 2018, 14:40
    В поддержку можно написать ещё раз купив дополнение.

    https://modstore.pro/info

    Авторы оказывают бесплатную техподдержку в течение 1 года со дня покупки.
      Влад
      Влад Старожил
      05 апреля 2018, 14:47
      Отлично, купил дополнение для того, чтобы купить его еще один раз!
      Павел Гвоздь
      Павел Гвоздь Эксперт
      05 апреля 2018, 20:26
      Напишите в личку, будем разбираться. И доступы сразу приложите, пожалуйста.
        Павел Гвоздь
        Павел Гвоздь Эксперт
        06 апреля 2018, 19:47
        Разобрались. Банально не был указан полный адрес до картинки. Подставили вначале image.jpg полный УРЛ:
        @INLINE https://site.ru/{$img}
        и всё работает, как надо!
      Владимир Дремучий
      Владимир Дремучий Проверенный
      05 апреля 2018, 22:11
      По cron перестал парсить, ошибок не выдаёт
        Степан Прищепенко
        Степан Прищепенко Проверенный
        06 апреля 2018, 11:28
        Павел, привет! Хороший компонент — молодец! Вопрос: какая актуальная минимальная версия php нужна? Как насчет динамически подгружаемого контента на сайте, когда пагинация только скролингом?
          Павел Гвоздь
          Павел Гвоздь Эксперт
          06 апреля 2018, 11:44
          актуальная минимальная версия php
          PHP 5.4

          пагинация только скролингом
          Скролл пагинацию можно обойти, если есть возможность получить записи на условно следующей странице по УРЛ. Например, вызвав
          http://site.ru/news/?p={n}
          у нас откроется соответствующая страница. Но записи на сайте выводятся при прокрутке.

          Мне конечно интересно придумать функционал, который позволил бы обходить скролл-страницы, к которым никак не обратиться по инструкции выше. Однако, пока идей в этом направлении особо нет, т.к. подгрузку при скролле каждый реализовывает по своему.
            Степан Прищепенко
            Степан Прищепенко Проверенный
            06 апреля 2018, 14:53
            если глянуть в композер там у каких то компонентов 7-ка минимальные требования, поэтому написал. А по обработке это я думаю виртуальный браузер поддерживающий js, но скорость не та и нагрузка конечно. Спасибо.
              Степан Прищепенко
              Степан Прищепенко Проверенный
              09 апреля 2018, 11:13
              кажется поправить надо, вот так в core/components/xparser/cron/parser.php
              if (!empty($ids)) {
                  // $params = array('ids' => $modx->toJSON($ids));
                  $params['ids'] = $modx->toJSON($ids);
              }
                Павел Гвоздь
                Павел Гвоздь Эксперт
                09 апреля 2018, 14:01
                Верно. Спасибо!
                  Степан Прищепенко
                  Степан Прищепенко Проверенный
                  09 апреля 2018, 14:18
                  И при установленном msearch2 в лог сыпятся ошибки при импорте, хотя это даже не ошибки, просто ручками потом индекс надо перестраивать, что можно сделать и в момент создания ресурса, может это моя личная проблема хз, не успел проверить еще. И вопрос, если не сложно конечно: никак не могу понять что за $sTask instanceof sTask никак не могу найти как он попадает в properties )
                    Павел Гвоздь
                    Павел Гвоздь Эксперт
                    09 апреля 2018, 19:17
                    может это моя личная проблема
                    Да, скорее ваша.

                    Это от Scheduler.
                    Степан Прищепенко
                    Степан Прищепенко Проверенный
                    09 апреля 2018, 17:18
                    У меня на 5.4 не работает выдает
                    <b>Parse error</b>:  syntax error, unexpected 'class' (T_CLASS), expecting identifier (T_STRING) or variable (T_VARIABLE) or '{' or '$' in <b>..../core/components/xparser/vendor/symfony/dom-crawler/Crawler.php</b> on line <b>694</b><br />
                    А вот на 5.6 завелась, но при запуске через CLI (через web нормально) новые сюрпризы:
                    Parse error: syntax error, unexpected '[' in .../core/components/xparser/vendor/react/promise/src/functions.php on line 15
                    Т.е. ругаться начинает на:
                    $canceller = [$promiseOrValue, 'cancel'];
                    и даже на
                    $reasons   = [];
                    может это частный глюк хз (и даже на 7.1 там еще интереснее)
                    И также не понятно, если парсить с сайта инфу с 10-1 страницы, он прошелся, добавил пагинацию в исключения… и в след раз мы больше не увидим 10-1 страницы хотя все самое свежее там… как быть?
                      Павел Гвоздь
                      Павел Гвоздь Эксперт
                      09 апреля 2018, 19:19
                      как быть?
                      Спарсить раз и перенастроить…

                      и даже на 7.1 там еще интереснее
                      У меня норм.

                      но при запуске через CLI
                      Не факт, что на CLI 5.6, раз работает в Веб.

                      P.S. Пишите в ТП на Modstore, она вроде для всего этого создана…
                    Степан Прищепенко
                    Степан Прищепенко Проверенный
                    09 апреля 2018, 17:57
                    Чет никак не могу разобраться по какому принципу подзадачи перехватываются, в какой момент он понимает, что задача 2 является подзадачей 1, если мы это ни где не указываем? разобрался
              Андрей
              Андрей Старожил
              06 июня 2019, 08:21
              Добрый день.
              Подскажите, для обновления спарсенных товаров нужны какие-то действия при настройке? Нужно указать уникальное поле, правильно? По которому он будет понимать товар как уникальный или нет?
                Павел Гвоздь
                Павел Гвоздь Эксперт
                06 июня 2019, 08:34
                Правильно.
                  Андрей
                  Андрей Старожил
                  06 июня 2019, 08:37
                  А ссылка, которая потом обработана таким правилом будет верно считаться уникальной?
                  @INLINE {'https://site.ru' ~ $link}
                    Павел Гвоздь
                    Павел Гвоздь Эксперт
                    06 июня 2019, 08:39
                    А почему нет?)
                      Андрей
                      Андрей Старожил
                      06 июня 2019, 08:42
                      Огонь) Я там вам в ЛС отписал, чувствую так быстрее моя задача решится))
                Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
                24