[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
1
2 396
+7
Поблагодарить автора Отправить деньги

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

Андрей
03 апреля 2018, 12:49
0
Синтаксис xPath теперь при использовании новой библиотеки изменился?
Влад
05 апреля 2018, 14:13
0
Блин год валялся компонент вот только добрался и не могу в тикеты отписать! в итоге настроил тестовый парсинг на опенсервере и на хостинге и в обоих случаях больше половины картинок не парсятся (так же которые со сторонних сайтов на доноре подтягиваются) в итоге парсинг «не заканчивается» — зависает, но ресурсы создаются с вышеупомянутыми проблемами!
В консоле такой вывод:
[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
    0
    В поддержку можно написать ещё раз купив дополнение.

    https://modstore.pro/info

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

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

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

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

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

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