Поиск закрывающего тега в HTML - C#
Формулировка задачи:
Привет всем.
Я не программист (базовые знания C++/PHP/JS имеются по долгу службы), но постоянно копаю ваш форум, если нужно что-то решить из задач программиста. Огромное спасибо такому комьюнити.
Но вот задачку данную гуглю уже много времени (на форуме было решение, но что-то оно не пашет).
Суть задачи:
Есть рандомная выгрузка исходного кода N сайтов. Оставлены только содержимое тега <body> </body>.
Есть определенные метки (class/id) для начальных тегов div/span/table, собранные на ручном анализе около 1500-2000 сайтов.
Метка является стартом тега, нужно найти закрывающий тег в пару к начальному.
Нужно выгрузить содержимое данного тега.
Пример:
Пытался воевать с регулярками, но всё упирается в то, что регулярка берет только ближайший закрывающий тег, т.е. в нашем случае она берет:
Насколько я пониманию логически, нужно перебирать внутренние теги, т.е. если внутри встречается <div>, то следующий </div> нужно игнорировать и искать дальше. Но реализовать на C# не хватает знаний, к сожалению.
Буду максимально признателен за помощь в решении задачи.
<div class="center_col">содержательная часть - простая</div> <div class="center_col"> содержательная часть состоящая из 2 частей. <div>2 часть в новом dive</div> </div> <div class="center_col"> содержательная часть очень сложная из вложенных тегов.. <div>1 часть в новом dive</div> <div>2 часть в новом dive</div><div>3 часть в новом dive</div> </div>
<div class="center_col">содержательная часть - простая</div>
<div class="center_col"> содержательная часть состоящая из 2 частей. <div>2 часть в новом dive</div>
<div class="center_col"> содержательная часть очень сложная из вложенных тегов.. <div>1 часть в новом dive</div>
Решение задачи: «Поиск закрывающего тега в HTML»
textual
Листинг программы
var source_top = project.Variables["parsed_plain_text"].Value;
var res = "";
HtmlAgilityPack.HtmlDocument document = new HtmlAgilityPack.HtmlDocument();
document.LoadHtml(source_top);
HtmlNode divs = document.DocumentNode.SelectSingleNode("//div[@class="ala-article"]");
return(divs.InnerText);