Как преобразовать div в таблицу HTML table

Тема в разделе "Функции и интерфейс программы", создана пользователем forparsing2, 5 фев 2021.

  1. forparsing2

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

    Регистрация:
    31 янв 2021
    Сообщения:
    10
    Добрый день,
    Есть кусок кода, на основании которого генерируется таблица из 2-х колонок (название параметра и значение) на переменное количество строк. Таблица генерируется странно, с использованием <div> и верстки css.
    Хочется при парсинге перевести ее в классическую таблицу, то есть забрать свойства и значения и разложить по тегам <tr><td>Свойство</td><td><Значение</td></tr>.
    Предполагаю, что это можно сделать в момент парсинга через функции поиска и замены.
    Исходный код такой (очень запутанный) и идет без :


    <div id="tabProdAtts_x_ROWx0" class="tr tabrow">
    <div class="td algnLeft prio0" data-type="text"
    style="max-width: 21.4286rem; flex-grow: 1; width: 10.7143rem;"><span id="tabProdAtts_x_ROWx0_x_Col0">Крутящий момент</span>
    </div>
    <div class="td algnLeft prio1" data-type="text" style="flex-grow: 1; width: 10.7143rem;"><span
    id="tabProdAtts_x_ROWx0_x_Col1">7 Нм</span></div>
    <div id="tabProdAtts_x_ROWx0_x_more" class="td moreInfo"><a></a></div>
    </div>

    <div id="tabProdAtts_x_ROWx1" class="tr tabrow">
    <div class="td algnLeft prio0" data-type="text"
    style="max-width: 21.4286rem; flex-grow: 1; width: 10.7143rem;"><span id="tabProdAtts_x_ROWx1_x_Col0">Площадь заслонки, до</span>
    </div>
    <div class="td algnLeft prio1" data-type="text" style="flex-grow: 1; width: 10.7143rem;"><span
    id="tabProdAtts_x_ROWx1_x_Col1">1.5 м²</span></div>
    <div id="tabProdAtts_x_ROWx1_x_more" class="td moreInfo"><a></a></div>
    </div>

    <div id="tabProdAtts_x_ROWx2" class="tr tabrow">
    <div class="td algnLeft prio0" data-type="text"
    style="max-width: 21.4286rem; flex-grow: 1; width: 10.7143rem;"><span id="tabProdAtts_x_ROWx2_x_Col0">Angular rotation</span>
    </div>
    <div class="td algnLeft prio1" data-type="text" style="flex-grow: 1; width: 10.7143rem;"><span
    id="tabProdAtts_x_ROWx2_x_Col1">90° </span></div>
    <div id="tabProdAtts_x_ROWx2_x_more" class="td moreInfo"><a></a></div>
    </div>

    <div id="tabProdAtts_x_ROWx3" class="tr tabrow">

    <div class="td algnLeft prio0" data-type="text"
    style="max-width: 21.4286rem; flex-grow: 1; width: 10.7143rem;"><span id="tabProdAtts_x_ROWx3_x_Col0">Потребляемая мощность</span>
    </div>
    <div class="td algnLeft prio1" data-type="text" style="flex-grow: 1; width: 10.7143rem;"><span
    id="tabProdAtts_x_ROWx3_x_Col1">7 ВА, 4.5 Вт</span></div>
    <div id="tabProdAtts_x_ROWx3_x_more" class="td moreInfo"><a></a></div>
    </div>

    <div id="tabProdAtts_x_ROWx4" class="tr tabrow">
    <div class="td algnLeft prio0" data-type="text"
    style="max-width: 21.4286rem; flex-grow: 1; width: 10.7143rem;"><span id="tabProdAtts_x_ROWx4_x_Col0">Время позиционирования</span>
    </div>
    <div class="td algnLeft prio1" data-type="text" style="flex-grow: 1; width: 10.7143rem;"><span
    id="tabProdAtts_x_ROWx4_x_Col1">Open:90 с, Close:15 с</span></div>
    <div id="tabProdAtts_x_ROWx4_x_more" class="td moreInfo"><a></a></div>
    </div>


    В нем я пометил жирным классы, которые есть в тегах <div> и отвечают за формирование строки в таблице (это tr tabrow) и 2-х ячеек в этой строки (prio0 - для левой ячейки, то есть свойства и prio1 - для правой ячейки, то есть значения свойства).
    Получается, что нужно как-то заменить теги, в которых присутствуют эти классы на соответствующие <tr> и <td>, а остальные теги удалить.
    Но как это сделать в режиме замены - я не знаю...
     
    Последнее редактирование: 5 фев 2021
  2. Root

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

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

    Код:
    <div class="td algnLeft prio0"{skip}>{skip}</div>|<tr><td>{skip(2)}</td>
    <div class="td algnLeft prio1"{skip}>{skip}</div>|<td>{skip(2)}</td></tr>
    <div{skip}>|
    <span{skip}>|
    </div>|
    </span>|
    <a></a>|
    {br2}|
    {get}|<table>{get}</table>
    2021-02-06_06-12-32.png
     
  3. forparsing2

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

    Регистрация:
    31 янв 2021
    Сообщения:
    10
    Спасибо!
    Не подскажите, чем именно в применении к данному примеру, отличается {skip} от {skip(2)}?
    Правильно ли я понимаю, что сам алгоритма замен работает так:
    - берется первая строка правила замены и проходится весь текст с поиском замен по этой строке. Если наши, то заменили. Переписали текст уже с учетом этой замены.
    - берется вторая строка правила замены и проходится по ней весь текст (с учетом уже замен по первой сроке). Проходит замена. Текст сохраняется уже с учетом этой замены.
    - и так далее до конца.
     
  4. Root

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

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

    Пример с {skip(n)} есть здесь Ссылки недоступны для гостей

    Понимаете правильно.
     
  5. recrut

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

    Регистрация:
    16 мар 2017
    Сообщения:
    45
    Добрый день. Подобная таблица оформленная через div, но что-то не понимаю как ее спарсить. Таблица содержит характеристики. Для каждого товара характеристики свои. Проблема в том, что столбы имеют одинаковую разметку.
    <div class="i_cele_property">
    <div class="i_cele_property_col">Высота спинки (mm)</div>
    <div class="i_cele_property_col">
    830 </div>
    </div>
    <div class="i_cele_property">
    <div class="i_cele_property_col">Колёсики</div>
    <div class="i_cele_property_col">
    На выбор </div>
    </div>
    Какие есть варианты забрать эти данные?
     
  6. Root

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

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

    Вот правила поиск-замены для преобразования div в table
    Код:
    <div class="i_cele_property">{AUTO}div|<tr>{AUTO}</tr>{ALL}
    <div class="i_cele_property_col">{AUTO}div|<td>{AUTO}</td>{ALL}
    <div{skip}>|
    <div>|
    </div>|
    Далее отправляете данные в макрос парсинга характеристик из HTML таблиц [VERTTABLE].
     
  7. recrut

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

    Регистрация:
    16 мар 2017
    Сообщения:
    45
    Спасибо! То что нужно.
    Что означает {AUTO} и {ALL} ?
     

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