Парсинг характиристики

Swanskey

Client
Регистрация
24.06.2018
Сообщения
69
Благодарностей
28
Баллы
18
Подскажите как сделать это

В переменной код страницы

HTML:
...

<table class="props_list">
                                                                                                                                                                                                        <tr itemprop="additionalProperty" itemscope
                                                            itemtype="http://schema.org/PropertyValue">
                                                            <td class="char_name">
                                                                                                                                <div class="props_item ">
                                                                    <span itemprop="name">Бренд</span>
                                                                </div>
                                                            </td>
                                                            <td class="char_value">
                                                        <span itemprop="value">
                                                                                                                            IDEAL                                                                                                                    </span>
                                                            </td>
                                                        </tr>
                                                                                                                                                                                                                                                                                                            <tr itemprop="additionalProperty" itemscope
                                                            itemtype="http://schema.org/PropertyValue">
                                                            <td class="char_name">
                                                                                                                                <div class="props_item ">
                                                                    <span itemprop="name">Вид</span>
                                                                </div>
                                                            </td>
                                                            <td class="char_value">
                                                        <span itemprop="value">
                                                                                                                            Линолеум гетерогенный                                                                                                                    </span>
                                                            </td>
                                                        </tr>
                                                                                                                                                                                                                                                                                                            <tr itemprop="additionalProperty" itemscope
                                                            itemtype="http://schema.org/PropertyValue">
                                                            <td class="char_name">
                                                                                                                                <div class="props_item ">
                                                                    <span itemprop="name">Цвет</span>
                                                                </div>
                                                            </td>
                                                            <td class="char_value">
                                                        <span itemprop="value">
                                                                                                                            Vals 167                                                                                                                     </span>
                                                            </td>
                                                        </tr>
                                                                                                                                                                                                                                                                                                            <tr itemprop="additionalProperty" itemscope
                                                            itemtype="http://schema.org/PropertyValue">
                                                            <td class="char_name">
                                                                                                                                <div class="props_item ">
                                                                    <span itemprop="name">Цветовая гамма</span>
                                                                </div>
                                                            </td>
                                                            <td class="char_value">
                                                        <span itemprop="value">
                                                                                                                            Бежевая                                                                                                                    </span>
                                                            </td>
                                                        </tr>
                                                                                                                                                                                                                                                                                                            <tr itemprop="additionalProperty" itemscope
                                                            itemtype="http://schema.org/PropertyValue">
                                                            <td class="char_name">
                                                                                                                                <div class="props_item ">
                                                                    <span itemprop="name">Назначение</span>
                                                                </div>
                                                            </td>
                                                            <td class="char_value">
                                                        <span itemprop="value">
                                                                                                                            Бытовое                                                                                                                    </span>
                                                            </td>
                                                        </tr>
                                                                                                                                                                                                                                                                                                            <tr itemprop="additionalProperty" itemscope
                                                            itemtype="http://schema.org/PropertyValue">
                                                            <td class="char_name">
                                                                                                                                <div class="props_item ">
                                                                    <span itemprop="name">Ширина (м)</span>
                                                                </div>
                                                            </td>
                                                            <td class="char_value">
                                                        <span itemprop="value">
                                                                                                                            3                                                                                                                    </span>
                                                            </td>
                                                        </tr>
                                                                                                                                                                                                                                                                                                            <tr itemprop="additionalProperty" itemscope
                                                            itemtype="http://schema.org/PropertyValue">
                                                            <td class="char_name">
                                                                                                                                <div class="props_item ">
                                                                    <span itemprop="name">Толщина (мм)</span>
                                                                </div>
                                                            </td>
                                                            <td class="char_value">
                                                        <span itemprop="value">
                                                                                                                            4.3                                                                                                                    </span>
                                                            </td>
                                                        </tr>
                                                                                                                                                                                                                                                                                                            <tr itemprop="additionalProperty" itemscope
                                                            itemtype="http://schema.org/PropertyValue">
                                                            <td class="char_name">
                                                                                                                                <div class="props_item ">
                                                                    <span itemprop="name">Вес (кг/м²)</span>
                                                                </div>
                                                            </td>
                                                            <td class="char_value">
                                                        <span itemprop="value">
                                                                                                                            2.55                                                                                                                    </span>
                                                            </td>
                                                        </tr>
                                                                                                                                                                                                                                                                                                            <tr itemprop="additionalProperty" itemscope
                                                            itemtype="http://schema.org/PropertyValue">
                                                            <td class="char_name">
                                                                                                                                <div class="props_item ">
                                                                    <span itemprop="name">Основа</span>
                                                                </div>
                                                            </td>
                                                            <td class="char_value">
                                                        <span itemprop="value">
                                                                                                                            Войлок                                                                                                                    </span>
                                                            </td>
                                                        </tr>
                                                                                                                                                                                                                                                                                                            <tr itemprop="additionalProperty" itemscope
                                                            itemtype="http://schema.org/PropertyValue">
                                                            <td class="char_name">
                                                                                                                                <div class="props_item ">
                                                                    <span itemprop="name">Коллекция</span>
                                                                </div>
                                                            </td>
                                                            <td class="char_value">
                                                        <span itemprop="value">
                                                                                                                            Ultra                                                                                                                    </span>
                                                            </td>
                                                        </tr>
                                                                                                                                                                                                                                                                                                            <tr itemprop="additionalProperty" itemscope
                                                            itemtype="http://schema.org/PropertyValue">
                                                            <td class="char_name">
                                                                                                                                <div class="props_item ">
                                                                    <span itemprop="name">Класс износостойкости</span>
                                                                </div>
                                                            </td>
                                                            <td class="char_value">
                                                        <span itemprop="value">
                                                                                                                            23/32                                                                                                                    </span>
                                                            </td>
                                                        </tr>
                                                                                                                                                                                                                                                                                                            <tr itemprop="additionalProperty" itemscope
                                                            itemtype="http://schema.org/PropertyValue">
                                                            <td class="char_name">
                                                                                                                                <div class="props_item ">
                                                                    <span itemprop="name">Дизайн</span>
                                                                </div>
                                                            </td>
                                                            <td class="char_value">
                                                        <span itemprop="value">
                                                                                                                            Модерн                                                                                                                    </span>
                                                            </td>
                                                        </tr>
                                                                                                                                                                                                                                                                                                            <tr itemprop="additionalProperty" itemscope
                                                            itemtype="http://schema.org/PropertyValue">
                                                            <td class="char_name">
                                                                                                                                <div class="props_item ">
                                                                    <span itemprop="name">Защитный слой (мм)</span>
                                                                </div>
                                                            </td>
                                                            <td class="char_value">
                                                        <span itemprop="value">
                                                                                                                            0.4                                                                                                                    </span>
                                                            </td>
                                                        </tr>
                                                                                                                                                                                                                                                                                                            <tr itemprop="additionalProperty" itemscope
                                                            itemtype="http://schema.org/PropertyValue">
                                                            <td class="char_name">
                                                                                                                                <div class="props_item ">
                                                                    <span itemprop="name">Гарантия</span>
                                                                </div>
                                                            </td>
                                                            <td class="char_value">
                                                        <span itemprop="value">
                                                                                                                            В течение срока, установленного производителем товара                                                                                                                    </span>
                                                            </td>
                                                        </tr>
                                                                                                                                                                                        </table>
                                        <table class="props_list"
                                               id="bx_117848907_248818_sku_prop"></table>

...
нужно взять данные, чтобы было так.
Бренд: IDEAL Вид: Линолеум гетерогенный Цвет: Vals 167 и т.д.
 

Sergodjan

Administrator
Команда форума
Регистрация
05.09.2012
Сообщения
19 443
Благодарностей
8 672
Баллы
113
нужно взять данные, чтобы было так.
Бренд: IDEAL Вид: Линолеум гетерогенный Цвет: Vals 167 и т.д.
Как вариант с помощью экшена Обработка текста (Regex) в список, по регулярке:
52915


Сложить все значения в список, затем брать из списка с удалением первую строку, через Обработка текста - Trim очищать от начальных и конечных пробельных символов и складывать в конец второго списка. Затем объединить строки второго списка в переменную с разделителем {-String.Space-}.
 
  • Спасибо
Реакции: Swanskey

Phoenix78

Client
Read only
Регистрация
06.11.2018
Сообщения
11 790
Благодарностей
5 689
Баллы
113
можно через xpath
первый элемент //*/table[@class='props_list']//td[@class='char_name']//span
второй элемент //*/table[@class='props_list']//td[@class='char_value']//span
 
  • Спасибо
Реакции: Swanskey

Swanskey

Client
Регистрация
24.06.2018
Сообщения
69
Благодарностей
28
Баллы
18
Как вариант с помощью экшена Обработка текста (Regex) в список, по регулярке:
Посмотреть вложение 52915

Сложить все значения в список, затем брать из списка с удалением первую строку, через Обработка текста - Trim очищать от начальных и конечных пробельных символов и складывать в конец второго списка. Затем объединить строки второго списка в переменную с разделителем {-String.Space-}.
Криво парсит. в начале страницы есть похожие теги.


Пошел другим путем. Одним кубиком)
C#:
// Характеристики
project.Variables["char"].Value = string.Empty;
var chars = instance.ActiveTab.FindElementsByXPath(".//*/table[@class='props_list'][1]/tbody/tr");
// Перебериаем коллекцию элементов
var list = project.Lists["1"];
foreach(HtmlElement item in chars) {
    project.Variables["char"].Value = string.Format(@"{0}", item.FindChildByXPath(".", 0).InnerText, System.Environment.NewLine);
    string text = project.Variables["char"].Value.Trim();
    list.Add(text);
}
Вроде работает, но надо еще так
52932
 

Phoenix78

Client
Read only
Регистрация
06.11.2018
Сообщения
11 790
Благодарностей
5 689
Баллы
113
в любом случае надо получать 2 элемента что бы склеить их как надо. раз xpath используете , так находите не 1 элемент а 2 по путям что я выше написал, да и склеивайте их внутри цикла в text, перед list.Add(text);
 

Swanskey

Client
Регистрация
24.06.2018
Сообщения
69
Благодарностей
28
Баллы
18
C#:
// Характеристики
var chars = instance.ActiveTab.FindElementsByXPath(".//*/table[@class='props_list'][1]/tbody/tr");
// Перебериаем коллекцию элементов
var list = project.Lists["1"];
foreach(HtmlElement item in chars) {
    string char1 = string.Format(@"{0}", item.FindChildByXPath("./td/div", 0).InnerText, System.Environment.NewLine).Trim();
    string char2 = string.Format(@"{0}", item.FindChildByXPath("./td/span", 0).InnerText, System.Environment.NewLine).Trim();
    string text = char1 + ": " + char2;
    list.Add(text);
}
:ay:
52934
 

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