Поиск закрывающего тега в HTML - C#

Узнай цену своей работы

Формулировка задачи:

Привет всем. Я не программист (базовые знания C++/PHP/JS имеются по долгу службы), но постоянно копаю ваш форум, если нужно что-то решить из задач программиста. Огромное спасибо такому комьюнити. Но вот задачку данную гуглю уже много времени (на форуме было решение, но что-то оно не пашет). Суть задачи: Есть рандомная выгрузка исходного кода N сайтов. Оставлены только содержимое тега <body> </body>. Есть определенные метки (class/id) для начальных тегов div/span/table, собранные на ручном анализе около 1500-2000 сайтов. Метка является стартом тега, нужно найти закрывающий тег в пару к начальному. Нужно выгрузить содержимое данного тега. Пример:
<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>
Насколько я пониманию логически, нужно перебирать внутренние теги, т.е. если внутри встречается <div>, то следующий </div> нужно игнорировать и искать дальше. Но реализовать на C# не хватает знаний, к сожалению. Буду максимально признателен за помощь в решении задачи.

Решение задачи: «Поиск закрывающего тега в 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);

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

10   голосов , оценка 3.8 из 5
Похожие ответы