public static void Main(string[] args) { Graph GR = new Graph(); SiteLoad CODE = new SiteLoad(); CODE.GetRefs("", GR, CODE); RankCounter(GR); Console.WriteLine("DONE"); }
public Vertex GetRefs(string html, Graph GR, SiteLoad CODE) { Vertex alrd = null; int cutstr; string realhtml; bool newpage; //начинаю с главной if (html == "") { html = htmlstart; } newpage = true; //проверяю, не добавлял ли еще foreach (Vertex tmpage in GR.allpages) { if (html == tmpage.thisref) { newpage = false; alrd = tmpage; } } //чтоб не качать всестраницы с сайта, их там больше тысячи if (count > 500) { newpage = false; alrd = GR.allpages[0]; } //если добавлял то if (newpage) { //содаю вершину Vertex PAGE = new Vertex(html); //закидываю ее в граф GR.allpages.Add(PAGE); //счетчик count++; Console.WriteLine(count.ToString()); //вытаскиваю ссылки с сайта HtmlWeb web = new HtmlWeb(); var htmlDoc = web.Load(html); foreach (HtmlNode link in htmlDoc.DocumentNode.SelectNodes("//a[@href]")) { //обработка строк с сылками realhtml = link.OuterHtml; cutstr = realhtml.IndexOf("\"") + 1; realhtml = realhtml.Substring(cutstr); cutstr = realhtml.IndexOf("\""); realhtml = realhtml.Substring(0, cutstr); realhtml = realhtml.Replace(htmlstart, ""); //если ссылка внутренняя - иду по графу вглубину if (realhtml.Length > 4) { if (realhtml.Substring(0, 4) == "/ru/") { realhtml = htmlstart + realhtml; PAGE.AddEdge(GetRefs(realhtml, GR, CODE)); } } } return(PAGE); } return(alrd); }