Парсинг таблицы: убрать пробелы в цене и строки с определенными названиями

Тема в разделе "Парсинг HTML-таблиц", создана пользователем VetalM, 30 окт 2019.

  1. VetalM

    VetalM New Member Пользователи

    Регистрация:
    30 авг 2019
    Сообщения:
    11
    Город:
    Харьков
    Приветствую.
    Есть сайт Ссылки недоступны для гостей настроил парсер на выгрузку в csv формат всей таблицы.
    1. В поле "цена" есть разделитель тысячных разрядов (пробел), как его убрать?
    2. Как удалить строку полностью, если она содержит любое значение, например "Держатель шторки"?
    Проект прикрепил.
     

    Вложения:

  2. aresa

    aresa Well-Known Member Пользователи

    Регистрация:
    17 окт 2015
    Сообщения:
    169
    Здравствуйте!
    1. Есть макрос для работы с ценой товара
    <TOPRICE>
    Ссылки недоступны для гостей
     
    VetalM и Root нравится это.
  3. Root

    Root Администратор Администратор

    Регистрация:
    10 мар 2010
    Сообщения:
    13.582
    Город:
    Барнаул
    Здравствуйте.

    Завтра к утру постараюсь добавить функционал.
     
    VetalM нравится это.
  4. VetalM

    VetalM New Member Пользователи

    Регистрация:
    30 авг 2019
    Сообщения:
    11
    Город:
    Харьков
    А можете ткнуть в руководство как работать с данными определенного столбца таблицы? Возможно ли так?
     
  5. aresa

    aresa Well-Known Member Пользователи

    Регистрация:
    17 окт 2015
    Сообщения:
    169
    Я вроде правильную ссылку кинул, или нет?:)
    Оборачиваете макросом <TOPRICE> нужную границу. Ниже выдержка из помощи


    Макрос для работы с ценой товара (изменение и форматирование)

    Данный макрос преобразует строку с ценой в нужный формат для CSV с поочередным выполнением введенных математических операций (| есть разделитель операций).


    Например, имеем:

    1
    2
    3
    4
    5
    6
    7
    8

    <TOPRICE><b> - 12.03 $</b></TOPRICE>
    <TOPRICE*0,87><b> - 12.03 $</b></TOPRICE>
    <TOPRICE*0,87|+7|/2><b> - 12.03 $</b></TOPRICE>
    <TOPRICE>7777,777</TOPRICE> - по умолчанию идет округление до сотых
    <TOPRICE>[R-1]7777,777</TOPRICE> - округление до десятых
    <TOPRICE>[R0]7777,777</TOPRICE> - округление до целых
    <TOPRICE>[R1]7777,777</TOPRICE> - округление до десятков
    <TOPRICE>[R2]7777,777</TOPRICE> - округление до сотен
    В результате получим:

    1
    2
    3
    4
    5
    6
    7
    8

    12,03
    10,47
    8,73
    7777,78 - по умолчанию идет округление до сотых
    7777,8 - округление до десятых
    7778 - округление до целых
    7780 - округление до десятков
    7800 - округление до сотен
    Как видно, удаляются все лишние символы, конечный результат (по умолчанию) округляется до сотых в ближайшую сторону и происходит замена всех точек на запятые.
     
  6. VetalM

    VetalM New Member Пользователи

    Регистрация:
    30 авг 2019
    Сообщения:
    11
    Город:
    Харьков
    Вот такая конструкция вообще ничего не выводит - пустой файл. [HORIZTABLE][PREFIX][/PREFIX]<TOPRICE><CD_GRAN_1!></TOPRICE>[/HORIZTABLE]
    Вероятно потому что граница парсинга - вся таблица, а мне нужно засунуть в <TOPRICE> только столбец "Цена". Вот я и хочу узнать как работать с определенными столбцами или как задать границу парсинга только один столбец?
     
  7. aresa

    aresa Well-Known Member Пользователи

    Регистрация:
    17 окт 2015
    Сообщения:
    169
    Просто задаёте новую границу, в которой будет браться одна цена
     
  8. VetalM

    VetalM New Member Пользователи

    Регистрация:
    30 авг 2019
    Сообщения:
    11
    Город:
    Харьков
    а вот как задать границей только один столбец из всей таблицы?
     
  9. aresa

    aresa Well-Known Member Пользователи

    Регистрация:
    17 окт 2015
    Сообщения:
    169
    Только сейчас удалось открыть Ваш проект.
    К сожалению макрос [HORIZTABLE] не могу использовать - у меня standart версия.
    Но можно этот сайт и без этого макроса распарсить.
    Через повторяющуюся границу, внутри которой каждый столбец - это обычная граница внутри повторяющейся.
    Ссылки недоступны для гостей
    Проект приложил
     

    Вложения:

    Последнее редактирование: 31 окт 2019
    VetalM и Root нравится это.
  10. Root

    Root Администратор Администратор

    Регистрация:
    10 мар 2010
    Сообщения:
    13.582
    Город:
    Барнаул
    Замените файл Content Downloader.exe (в папке с программой) этим файлом:
    Скрытое содержимое:
    **Скрытое содержимое: доступно при наличии 3 постов.**
    В цене на том сайте не обычный пробел, а символ неразрывного пробела. Для его замены/удаления добавил в поиск-замену оператор {NBS}

    2019-10-31_10-27-55.png

    Для удаления неразрывных пробелов только для столбца "Цена" используйте таргетированную поиск-замену:

    2019-10-31_10-27-20.png

    Код:
    Цена[TARGETED]{NBS}|
    Удаление строк есть в редакторе CSV.
     
    VetalM нравится это.
  11. VetalM

    VetalM New Member Пользователи

    Регистрация:
    30 авг 2019
    Сообщения:
    11
    Город:
    Харьков
    Спасибо, с ценами все получилось.
    Я нашел, что можно искать и удалять только по одному столбцу, а можно например по двум, трем и т.д.?
    Ссылки недоступны для гостей
    И можно ли комплексно, например, удалять строки, если в столбцах "Штрих-код" и "Артикул" пусто и если в столбце "Артикул" есть значение "Крючок межреберный"?
     
  12. VetalM

    VetalM New Member Пользователи

    Регистрация:
    30 авг 2019
    Сообщения:
    11
    Город:
    Харьков
    Ответите пожалуйста на мое сообщение выше?
     
  13. Root

    Root Администратор Администратор

    Регистрация:
    10 мар 2010
    Сообщения:
    13.582
    Город:
    Барнаул
    Пока нельзя.
     

Поделиться этой страницей