Категория идет отдельным тегом (группой тегов). Как я понял, саму группу тегов ты распознаешь. Тогда алгоритм примерно такой.
Перед циклом обнуляешь переменную, в которой у тебя будет названии категории.
Внутри цикла если нашел категорию, то запоминаешь ее. если это товар, то берешь категорию из переменной.
Типа такого (код условный):
Код:
var
CatName : String;
DataRow : TDataRowObject; // типа результат получения строки
begin
CatName := '';
Repeat
DataRow := ParseHTML(...); // получаем очередную строку из хтмл'я
If DataRow.IsCategory
Then CatName := DataRow.Name // сохраняем имя категории
Else AddRow(CatName, DataRow.Name, DataRow.Art, DataRow.Proce, DataRow.Quantity); // иначе - добавляем строку
Until DataRow = Nil;
как уже сказал, код условный, просто что бы продемонстрировать концепцию.