Макрос [EXTRACTTABLE] предназначен для извлечения кода всех HTML таблиц (table). Благодаря этому в некоторых сложных случаях (об этом ниже) можно будет успешно извлекать характеристики из таблиц с помощью макросов шаблона вывода: [HORIZTABLE] и [VERTTABLE].
1 2 | [EXTRACTTABLE][DOCSOURCE][/EXTRACTTABLE] - извлечение HTML таблиц из кода WEB страницы [EXTRACTTABLE]<CD_GRAN_3!>[/EXTRACTTABLE] - извлечение HTML таблиц из кода границы парсинга 3 |
Важно: При извлечении таблиц удаляются лишние thead или лишние строки из thead.
Например, есть такая таблица
Она содержит несколько лишних строк с заголовками, которые не нужны. Задача макроса – удалить лишние строки заголовка и вывести все найденные таблицы.
1 | [EXTRACTTABLE]{ETTEMPLATE}[HORIZTABLE][PREFIX]<CD_DOCURL!>[/PREFIX][MIN]2[/MIN]{ETVALUE}[/HORIZTABLE]{/ETTEMPLATE}[DOCSOURCE][/EXTRACTTABLE] |
Данная конструкция макросов шаблона вывода спарсит подобные таблицы примерно вот в такой результат
Обратите внимание на параметр {ETTEMPLATE}…{ETVALUE}…{/ETTEMPLATE} (в коде выше) с помощью него можно добавить текст или макросы к каждой извлекаемой HTML Таблице. В данном случае с помощью этого параметра к каждой извлеченной таблице добавляется макрос парсинга характеристик [HORIZTABLE]. А {ETVALUE} (внутри параметра {ETTEMPLATE}) выводит каждую извлекаемую таблицу.
При использовании [HORIZTABLE] (названия столбцов таблицы выводятся горизонтально, в строке) в случае вывода нескольких таблиц, каждая, по умолчанию, разделяется оператором переноса строк [CSVLB]. В результате получим несколько [HORIZTABLE] и правильный вывод в результат CSV – несколько таблиц одна под другой.
Если же для извлечения характеристик из HTML таблиц используется макрос [VERTTABLE], то в макрос [EXTRACTTABLE] нужно добавить параметр {SINGLETEMPLATE}
1 | [EXTRACTTABLE]{SINGLETEMPLATE}{ETTEMPLATE}[VERTTABLE][PREFIX][/PREFIX][MIN]2[/MIN]{ETVALUE}[/VERTTABLE]{/ETTEMPLATE}[DOCSOURCE][/EXTRACTTABLE] |
В этом случае, при наличии в коде нескольких таблиц в макрос [VERTTABLE] будет взята не каждая из них, а все сразу. В результате получится правильный вид таблицы CSV (они выведутся в результат CSV в одной строке одна за другой)
Для установки альтернативного разделителя используйте параметр {ETSEP} (без параметра {SINGLETEMPLATE}, так как нужен вывод нескольких таблиц с разделителем)
1 | [EXTRACTTABLE]{ETTEMPLATE}{ETVALUE}{/ETTEMPLATE}РАЗДЕЛИТЕЛЬ{/ETSEP}[DOCSOURCE][/EXTRACTTABLE] |