AB - Repricer Pro - Мониторинг цен конкурентов и динамическое ценообразование

Да, поддерживает.

1 лайк

Хорошо было бы добавить ещё одно правило парсинга - обращаться к элементу с указанным классом по CCS селектору и с указанием конкретного элемента, так как их может быть несколько.

Вот решение через xpath - http://i.abt.team/i/202104151130.4ylOF.png

Да, так думали - спасибо за наводку. Но теперь выдача ограничивается 3000 символами и ругается на это. Как можно это обойти?

Уточните селектор css, чтобы уменьшить результат - если это критично, то вы можете увеличить это значение тут http://i.abt.team/i/202104151237.ZBQGM.png

Спасибо! Уточнили селектор и все отлично, без увеличения лимита. Всем кто читает тему и сомневается в возможностях парсера - отличный модуль, прекрасная интеграция и большие возможности. Однозначно модуль MustHave!!!

@ab.developer Подскажите как быть если цен может быть несколько 1, 2, 3, 4, 5 и т.д. (таблица с ценами) и надо брать последнюю строку с ценой, а не какую-то конкретно?
селекторы выглядят так:
#product_variant_table > tbody > tr:nth-child(1) > td:nth-child(2) > span.price.price-table-old-price
#product_variant_table > tbody > tr:nth-child(2) > td:nth-child(2) > span.price.price-table-old-price
#product_variant_table > tbody > tr:nth-child(3) > td:nth-child(2) > span.price.price-table-old-price
#product_variant_table > tbody > tr:nth-child(4) > td:nth-child(2) > span.price.price-table-old-price

тоесть в данном случае надо брать 4-ю строку, но как быть если на другом товаре пять строк?

#product_variant_table > tbody > tr:nth-child(1) > td:nth-child(2) > span.price.price-table-old-price
#product_variant_table > tbody > tr:nth-child(2) > td:nth-child(2) > span.price.price-table-old-price
#product_variant_table > tbody > tr:nth-child(3) > td:nth-child(2) > span.price.price-table-old-price
#product_variant_table > tbody > tr:nth-child(4) > td:nth-child(2) > span.price.price-table-old-price
#product_variant_table > tbody > tr:nth-child(5) > td:nth-child(2) > span.price.price-table-old-price

а тут надо брать пятую строку…тоесть всегда надо брать последнюю строку. Как быть?

Есть last-child свойство

1 лайк

а можно поподробнее?
в первом правиле получул html по селектору #product_variant_table > tbody

Полученный код
<tbody>
<tr value="44750" productid="13773">
<td class="price-table-cell" value="57" title="100 шт."> <span class="price-table-pack">100 шт.</span>
</td>
<td class="price-table-cell"> <span class="price price-table-old-price">76 руб</span> <br> <span class="priceNew price price-table-price">71</span> руб</td>
<td class="price-table-cell"><div class="quantity--spinner" data-trigger="spinner"> <input type="text" class="spinner qty" value="0" data-rule="quantity" data-min="0"><div class="input-group-append"><div class="input-group-text"> <button type="button" class="spin-up" data-spin="up">+</button> <button type="button" class="spin-down" data-spin="down">-</button>
</div></div>
</div></td>
<td class="price-table-cell"><div class="price-table-sum-price"> <span class="price-total price-total2">0</span> <span class="discount-total" style="display: none">0</span> руб</div></td>
</tr>
<tr value="44752" productid="13773">
<td class="price-table-cell" value="38" title="500 шт."> <span class="price-table-pack">500 шт.</span>
</td>
<td class="price-table-cell"> <span class="price price-table-old-price">277 руб</span> <br> <span class="priceNew price price-table-price">258</span> руб</td>
<td class="price-table-cell"><div class="quantity--spinner" data-trigger="spinner"> <input type="text" class="spinner qty" value="0" data-rule="quantity" data-min="0"><div class="input-group-append"><div class="input-group-text"> <button type="button" class="spin-up" data-spin="up">+</button> <button type="button" class="spin-down" data-spin="down">-</button>
</div></div>
</div></td>
<td class="price-table-cell"><div class="price-table-sum-price"> <span class="price-total price-total2">0</span> <span class="discount-total" style="display: none">0</span> руб</div></td>
</tr>
</tbody>

Как во втором правиле получить last-child свойство чтобы запрать цену 277 руб?

большое спасибо, разобрался, сразу в первом правиле получить текст по селектору #product_variant_table > tbody > tr:last-child > td:nth-child(2) > span.price.price-table-old-price
и все заработало как надо.

2 лайка

@ab.developer подскажите это правильное поведение, если у конкурента нет “Полной цены конкурента”, а есть только “цена продажи конкурента” то после ручного парсинга в разделе “Доступные цены товара” “цена конкурента” 0, хотя в “Список связанных конкурентов” цена конкурента указана


цена появилась только после добавления для данного конкурента атрибута “Наличия” (чисто технического, так как явно у него это не указано)

как пожелание, переименовать раздел “Скидка” на “Примечания” так как там можно получить информацию не только об акциях, а например о варианте упаковки и т.п. или добавить еще один параметр “Примечания”

Почему не работает псевдокласс :nth-last-child ? появляется ошибка “Ой, произошла ошибка (SyntaxError: Unexpected end of JSON input). Пожалуйста, попробуйте еще раз.”
Также нет возможности выбрать предпоследнюю строку используя псевдокласс :nth-last-child(2) выдает такую же ошибку. Работает только :last-child выдает последнюю строку, при этом :last-child(2) также выдает последнюю строку, а надо предпоследнюю. Как быть?

Подскажите почему может если вводить на русском “Название группы правил” то оно превращается в “???” такое ощущение что что-то с кодовой страницей, а значение вообще не сохраняется

Да, проблема с кодировкой - нужно смотреть что у вас в базе данных - напишите, пожалуйста, нам в ТП.

Именно с этим псевдоклассом есть проблема php-библиотеки парсинга html. На данный момент попробуйте другие варианты селектора, если у вам никак не получиться, напишите нам в ТП - поможем.

Порауйте плиз датой выхода обновления. Очень очень функционал ждем. Хотя бы +/- неделя.

Насколько мне известно, то совсем скоро.

1 лайк

Есть таблица с ценами и на каждом товаре она может иметь разное количество строк от 1 и более.
Пример 1 (сдесь надо брать Цена2, тоесть предпоследняя строка):

Summary
<tr>Цена1</tr>
<tr>Цена2</tr>
<tr>Цена3</tr>

Примиер 2 (сдесь надо брать Цена3, тоесть предпоследняя строка):

Summary
<tr>Цена1</tr>
<tr>Цена2</tr>
<tr>Цена3</tr>
<tr>Цена4</tr>

Задача брать предпоследнюю строку. Как быть?

  1. Был обнаружен баг в использовании правила Xpath, для его исправления обновите файл app/addons/ab__repricer_pro/Tygh/Addons/Ab_priceComparison/Rules/Processing/RuleXpath.php этим содержимым - http://i.abt.team/i/RuleXpath.php

  2. Если взять в качестве теста эту ссылку https://abd-24cf9ae815.demos.abt.team/ru/price/
    Тогда можно создать такие правила - http://i.abt.team/i/202104221136.AlpOY.png