Как получить полное содержимое тега, например <div>...</div>

Kifir

Client
Регистрация
06.03.2015
Сообщения
15
Благодарностей
1
Баллы
3
Как получить полное содержимое тега, например <div>...</div>. Наверняка многие сталкивались, как можно сделать?
 

rostonix

Известная личность
Регистрация
23.12.2011
Сообщения
29 067
Благодарностей
5 715
Баллы
113
Через конструктор действий. Брать innerhtml
Тип взаимодействия Get вместо стандартного Rise или Set
 

Kifir

Client
Регистрация
06.03.2015
Сообщения
15
Благодарностей
1
Баллы
3
О! Спасибо! А если не со страницы, а из переменной?
 

rostonix

Известная личность
Регистрация
23.12.2011
Сообщения
29 067
Благодарностей
5 715
Баллы
113
из переменной только регулярками парсить
но если у дива есть вложенные дивы, то печаль при составлении регулярок
 

Kifir

Client
Регистрация
06.03.2015
Сообщения
15
Благодарностей
1
Баллы
3

Lexicon

Client
Регистрация
27.12.2012
Сообщения
1 775
Благодарностей
901
Баллы
113
Xpath же нет?
 

rostonix

Известная личность
Регистрация
23.12.2011
Сообщения
29 067
Благодарностей
5 715
Баллы
113

Lexicon

Client
Регистрация
27.12.2012
Сообщения
1 775
Благодарностей
901
Баллы
113
Мда, что то все что удалось нагуглить взывает к использованию html agility pack... Отвык я что то от шарпа))) как то на питоне все попроще)
 

AntonBizen

Client
Регистрация
17.09.2015
Сообщения
11
Благодарностей
1
Баллы
3
При парсинге кладу в переменную содержимое с результата get запроса, чтобы потом разбирать по нужным элементам. Постоянно мучаюсь с этими регулярками по вложеным элементам, было бы какое-нибудь решение, что-то вроде снипета на C#, чтобы по id тега содержимое в переменную класть, было бы вообще круто. Но изучать C# с нуля ради этого что-то не хочется)
 

doc

Client
Регистрация
30.03.2012
Сообщения
8 685
Благодарностей
4 642
Баллы
113

Moromer

Client
Регистрация
16.10.2016
Сообщения
24
Благодарностей
0
Баллы
1
При парсинге кладу в переменную содержимое с результата get запроса, чтобы потом разбирать по нужным элементам. Постоянно мучаюсь с этими регулярками по вложеным элементам, было бы какое-нибудь решение, что-то вроде снипета на C#, чтобы по id тега содержимое в переменную класть, было бы вообще круто. Но изучать C# с нуля ради этого что-то не хочется)
Поделитесь решением, пжст, а то уже 4-й день ковыряю:
  • сначала парсил Dom-элементы регуляркой, но пробема в том, что находила только 1 значение вместо 30. Не смог добавить переменную счетчика в поле номера совпадения, тк. при этом ZP намертво виснет.
  • потом решил использовать XPath через AgilityHtmlPack. Но после установки Agility-пакета в Зенку, рабочий пример скрипта (с одной из веток этого форума) у меня отказался работать. Документации нет толковой по Agile, админы отсюда молчат и помощи нет. В итоге вариант парсинга через Agile оказался тупиковым.
  • Далее решил использовать массив, чтобы в цикле через парсинг, регуляркой, складывать туда найденные блоки. Но не вышло, т.к. не получается нормально объявить и иницировать строковые массивы
Код:
var dom_int = project.Variables["dom"].Value; //заносим DOM в рабочую переменную
string[] div_array = new String[29]; //создаем строковой массив за пределами цикла для хранения 30ти div'ов и инициализируем его
    for (int i=0; i<=29;i++) // запускаю цикл из 30 ротаций
        { // начало поиска div'ов
        HtmlElement htmlElement = instance.ActiveTab.FindElementByAttribute("div", "class", "aditem", "regexp", i);
        if (!htmlElement.IsVoid) //если элемент найден
                        { // записываем outerhtml в i элемент массива
                        array div_array[i] = htmlElement.GetAttribute("outerhtml");         // Получаю значение атрибута "outerhtml" и заношу его в i-ячейку массива div_array
                        }
        }
 

tka4enko.ilya

Client
Регистрация
20.10.2015
Сообщения
61
Благодарностей
9
Баллы
8
можно просто использовать коллекцию элементов + строковые списки (не нужно указывать количество элементов)
List<string> divs = new List<string>();
HtmlElementCollection spisok = instance.ActiveTab.FindElementsByAttribute("div", "class", "aditem", "regexp");
for (int index = 0; index < spisok.Count; index++)
{
HtmlElement element = spisok.GetByNumber(index);
divs.Add(element.GetAttribute("outerhtml");
}


только что ты хочешь делать дальше???
 

Moromer

Client
Регистрация
16.10.2016
Сообщения
24
Благодарностей
0
Баллы
1
дальше каждый элемент divs буду парсить по составным элементам и сохраню это все в табличку
 

tka4enko.ilya

Client
Регистрация
20.10.2015
Сообщения
61
Благодарностей
9
Баллы
8
так можно было прям в цикле и парсить, без списков и массивов
 

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