コード例 #1
0
        public static void Main(string[] args)
        {
            Graph    GR   = new Graph();
            SiteLoad CODE = new SiteLoad();

            CODE.GetRefs("", GR, CODE);
            RankCounter(GR);
            Console.WriteLine("DONE");
        }
コード例 #2
0
        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);
        }