Помогите с логикой парсинга сайта в таблицу XLS

DrDrakeRamore

Новичок
Регистрация
08.01.2019
Сообщения
7
Благодарностей
2
Баллы
3
Добрый вечер, всем!
Помогите пожалуйста додумать и решить такую проблему:

Дан сайт с растениями - нужно собрать с него в таблицу данные название товара, какие есть у него размеры и соответственно цены. (Цены варьируются в зависимости от размеров).
На скрине страницы отметил поля которые собираются, их вообще больше но суть не в этом с парсингом все понятно...

Скрин1.jpg

Таких страниц будет порядка 1000 штук. После сбора всех данных со страницы в списки... Проблема заключается в том, что так как поле названия всего одно, а размеров и цен несколько (при чем их количество каждый раз варьируется в зависимости от товара),
получается такая картина, как пример по двум страницам указал на скрине получаемый и желаемый результат:

Скрин2.jpg

То есть в первом варианте непонятно к какому товару какой вариант (с размером ценой и т.д.) относится....
Подскажите пожалуйста, как можно реализовать парсинг так, как вовтором варианте или просто, чтобы сохранялась и была понятна принадлежность атрибутов к определенному товару, и названия товаров не сбивались в кучу.

Буду очень признателен за помощь!
 

Astraport

Client
Регистрация
01.05.2015
Сообщения
4 983
Благодарностей
4 433
Баллы
113
Совершенно непонятно что и как вы там парсите и как формируете наполнение таблицы. При нормальном подходе такого быть не должно.
Но если нужен костыль, то считайте тогда у каждого товара количество размеров/цен и записывайте название с помощью SetCell("A", count);
 

DrDrakeRamore

Новичок
Регистрация
08.01.2019
Сообщения
7
Благодарностей
2
Баллы
3
Совершенно непонятно что и как вы там парсите и как формируете наполнение таблицы. При нормальном подходе такого быть не должно.
Но если нужен костыль, то считайте тогда у каждого товара количество размеров/цен и записывайте название с помощью SetCell("A", count);
Попробую еще раз Объяснить -

Парсим:

Название Товара А - в список 1; - Получаем в списке 1 - NameА
Цены Товара А - в список 2 - Получаем в списке 2 - PriceA1;PriceA2;PriceA3
Размеры Товара А - в список 3 - Получаем в списке 3 - SizeA1;SizeA2;SizeA3

Заносим данные из списков в таблицу по столбцам получаем:


NameАPriceA1SizeA1
PriceA2SizeA2
PriceA3SizeA3

Но когда по такой же логике, спарсим следующий Товар В и запишем данные в таблицу получим:

NameАPriceA1SizeA1
NameBPriceA2SizeA2
PriceA3SizeA3
PriceB1SizeB1
PriceB2SizeB2
PriceB3SizeB3


То есть название товара становится в следующую пустую ячейку в столбце, вопрос в том как сделать или правильно сформировать наполнение таблицы, чтобы было так:

NameАPriceA1SizeA1
PriceA2SizeA2
PriceA3SizeA3
NameBPriceB1SizeB1
PriceB2SizeB2
PriceB3SizeB3

или так:

NameАPriceA1SizeA1
NameАPriceA2SizeA2
NameАPriceA3SizeA3
NameBPriceB1SizeB1
NameBPriceB2SizeB2
NameBPriceB3SizeB3

Чтобы структура не сбивалась и было понятно к какому товару (Name) относятся атрибуты Price и Size... Возможно так будет понятнее
Был бы очень благодарен, если бы Вы описали "нормальный подход"
 
Последнее редактирование:

Valandersi

Client
Регистрация
19.01.2015
Сообщения
1 923
Благодарностей
1 123
Баллы
113
Ставите счетчик, парсите все в переменные, раскладываете по таблице, добавляете к счетчику 1 и по новой
 

DrDrakeRamore

Новичок
Регистрация
08.01.2019
Сообщения
7
Благодарностей
2
Баллы
3
Ставите счетчик, парсите все в переменные, раскладываете по таблице, добавляете к счетчику 1 и по новой
А если количество параметров у атрибута товара каждый раз разное может быть 3 а может к примеру 15, как тогда быть? создавать по 15 переменных под каждый атрибут?
 

Valandersi

Client
Регистрация
19.01.2015
Сообщения
1 923
Благодарностей
1 123
Баллы
113
А если количество параметров у атрибута товара каждый раз разное может быть 3 а может к примеру 15, как тогда быть? создавать по 15 переменных под каждый атрибут?
Значит 15 переменных нужно или их групировать и все атрибуты в 1 клетку
 

Evgeny76

Client
Регистрация
11.09.2015
Сообщения
192
Благодарностей
85
Баллы
28
Название Товара А - в {-Variable.name-}
Цены Товара А - в список 1
Размеры Товара А - в список 2

потом брать со списка 1 первую строку с удалением - добавляем в {-Variable.price-},
со списка 2 первую строку с удалением - добавляем в {-Variable.size-}.
Таблица: добавить строку {-Variable.name-}{-String.Tab-}{-Variable.price-}{-String.Tab-}{-Variable.size-}
и опять к спискам - получить первую строку с удалением. Как список закончился - переходим к следующему товару.
 
  • Спасибо
Реакции: DrDrakeRamore

DrDrakeRamore

Новичок
Регистрация
08.01.2019
Сообщения
7
Благодарностей
2
Баллы
3
Название Товара А - в {-Variable.name-}
Цены Товара А - в список 1
Размеры Товара А - в список 2

потом брать со списка 1 первую строку с удалением - добавляем в {-Variable.price-},
со списка 2 первую строку с удалением - добавляем в {-Variable.size-}.
Таблица: добавить строку {-Variable.name-}{-String.Tab-}{-Variable.price-}{-String.Tab-}{-Variable.size-}
и опять к спискам - получить первую строку с удалением. Как список закончился - переходим к следующему товару.
Вот это пожалуй то, что нужно - элегантное и простое решение спасибо!
 

Кто просматривает тему: (Всего: 1, Пользователи: 0, Гости: 1)