Обход дерева ссылок HTML страницы - C#
Формулировка задачи:
Необходимо чтобы программа скачивала HTML с сайта, парсила, находила ссылки на другие страницы, и по ним строила дерево углубляющееся на произвольно заданое X. Грубо говоря задача рекурсивного обхода дерева каталога, только по ссылкам. Не могу решить никак =(
Main Page
-link1
--link1_1
-link2
--link2_1
--link2_2
-link3
Решение задачи: «Обход дерева ссылок HTML страницы»
textual
Листинг программы
private void GetTree(string url, TreeNode node, int cntr)
{
HttpWebRequest request = WebRequest.Create(url) as HttpWebRequest;
HttpWebResponse response = request.GetResponse() as HttpWebResponse;
StreamReader str = new StreamReader(response.GetResponseStream());
string html = str.ReadToEnd();
Match m = Regex.Match(html, "<\\s*a\\s+href=\"(.*?)\"", RegexOptions.Multiline);
List<string> links = new List<string>();
while (m.Success)
{
links.Add(m.Groups[1].Value.ToString());
m = m.NextMatch();
}
foreach (string a in links)
node.Nodes.Add(a);
if (cntr > 0)
{
foreach (TreeNode n in node.Nodes)
{
GetTree(n.Text, n, cntr-1);
}
}
str.Close();
}