Получить Dom-модель

  • Автор темы Автор темы proffman
  • Дата начала Дата начала

proffman

Client
Регистрация
24.01.2013
Сообщения
547
Реакции
51
Баллы
28
Дамы и господа! Нужна помощь как не опытному в этом деле примерно в следующем:

1. Получение Dom-модель текущей страницы прямо в сниппете и загнать в переменную
2. С переменной выпарсить всё регуляркой и записать результат в список

За ответы благодарю! :-)
 
Последнее редактирование:
Хотя бы класс при помощи которого можно получить dom-модель.
Можно конечно FindElementByAttribute указать, но мне нужно именно dom...
 
Последнее редактирование:
Вставляешь в кубик "Свой си# код"
return instance.ActiveTab.DomText;
Вернет тебе DOM-модель активной вкладки
 
Делал так Tab dom = instance.ActiveTab.DomText; :D
Потому и не работало... Спасибо =)
 
даже без кода можно
эти данные лежат в обычной переменной {-Page.Dom-}
 
Вставляешь в кубик "Свой си# код"
return instance.ActiveTab.DomText;
Вернет тебе DOM-модель активной вкладки
Еще подскажи пожалуйста что тут добавить instance.ActiveTab.DomText; чтобы можно было указать регуляру, чтобы парсить только то что нужно... И еще, указать номер совпадения скажем 0, а если в список добавлять, то вместо 0 что нужно будет указать?
Извиняюсь за тупые вопросы.. В этом деле я новичок, потому не пинайте сильно))
 
Еще подскажи пожалуйста что тут добавить instance.ActiveTab.DomText; чтобы можно было указать регуляру, чтобы парсить только то что нужно... И еще, указать номер совпадения скажем 0, а если в список добавлять, то вместо 0 что нужно будет указать?
Извиняюсь за тупые вопросы.. В этом деле я новичок, потому не пинайте сильно))
Так под это все дело именно снипет принципиально нужен? Зачем все так усложнять, тем более новичку.
Все это реализовано в стандартном кубике (экшене). Табы->Данные->Взять DOM. В экшене устанавливаете галочку "Парсить данные" - вставляете в поле регулярку. У Вас выскакивают варианты выбора - парсить одно совпадение в переменную, или все в список.
 
  • Оценить
Реакции: DragonBlack
Нет, как раз нужно в C# всё реализовать)) пм знаю как свои 5 пальцев, просто бывают ситуации когда без C# не обойтись, шаблон в таком случае выполняется довольно медленно...
Вот как раз пару дней назад решил что потихоньку нужно переходить на C#, хотя бы базовые элементарные вещи усвоить, которые помогут повысить быстродействие шаблона.
Вот нашел, единственное не знаю как получить 2,3,и.т. совпадение
Код:
Развернуть Свернуть Копировать
string regex = "[а-я]+";
string text =  "просто текст обычный";
var reg = new System.Text.RegularExpressions.Regex(regex, System.Text.RegularExpressions.RegexOptions.None);
//сохраняем результат в нужную переменную, не дожидаясь перитонита
project.Variables["codeResult"].Value = reg.Matches(text)[0].ToString();
return reg.Matches(text)[0];

Пробовал экспериментировать с .RegexOptions.None, ничего не получилось.. Нужно чтобы можно было указать номер совпадения, а еще лучше вместо него сохранить всё в список.
Или хотя бы указать номер совпадения..
 
Код:
Развернуть Свернуть Копировать
var list = project.Lists["result"];
string regex = "[а-я]+";
string text =  "просто текст обычный";
var reg = new System.Text.RegularExpressions.Regex(regex, System.Text.RegularExpressions.RegexOptions.None);
int list_count = reg.Matches(text).Count;
for (int i=0; i<list_count; i++)
{
    list.Add(reg.Matches(text)[i].ToString());
}
Как-то так...
 
Последнее редактирование:
  • Оценить
Реакции: DragonBlack и proffman
Всё работает, спасибо за помощь!!! :-)
 
Все таки, обычным экшином спарсить дом в список получается быстрее чем через спипет. Но в остальном, всё быстро получается... evgen_po ещё раз огромное спасибо!
 
Попробуй вот так
C#:
Развернуть Свернуть Копировать
var rezultList = project.Lists["Список на выходе"];
var dom = instance.ActiveTab.DomText;
var regular = project.Variables["Регулярка"].Value;

var lst = Regex.Matches(dom, regular).Cast<Match>().Select(x=>x.Value).ToList();
rezultList.AddRange(lst);
 
  • Оценить
Реакции: artur23

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