0

私はOOPプログラミングが初めてで、誰かが私を助けることができるかどうか疑問に思っていました.コードを書いていて、プログラムに必要なものがたくさんあることに気付きました;

class scrape
{
    public void parse()
    {
        string Url = "http://www.blah.co.uk/";
        HtmlWeb web = new HtmlWeb();
        HtmlDocument doc = web.Load(Url);
        Console.WriteLine("URL Loaded,");

        scrape scrape = new scrape();
        scrape.cats(doc);
    }
    private void cats(HtmlDocument doc)
    {
        HtmlNode topcats = doc.GetElementbyId("main_nav");
        if (topcats != null)
        {
            IEnumerable<HtmlNode> topnav = topcats.Descendants("a");
            foreach (var toplink in topnav)
            {
                if (toplink.Attributes.Contains("href"))
                {
                    if (toplink.Attributes["href"].Value.EndsWith(".html"))
                    {
                        Console.WriteLine("http://www.blah.co.uk/" + toplink.Attributes["href"].Value);
                        Console.WriteLine("++++++++ " + toplink.InnerText + " +++++++++++");


                        //sub cats
                        HtmlWeb cat_web = new HtmlWeb();
                        HtmlDocument cat_doc = cat_web.Load("http://www.blah.co.uk/" + toplink.Attributes["href"].Value);

                        HtmlNode subcats = cat_doc.GetElementbyId("pagenav");
                        if (subcats != null)
                        {
                            IEnumerable<HtmlNode> subnav = subcats.Descendants("a");
                            foreach (var sublink in subnav)
                            {
                                if (sublink.Attributes.Contains("href"))
                                {
                                    if (sublink.Attributes["href"].Value.EndsWith(".html"))
                                    {
                                        Console.WriteLine("http://www.blah.co.uk/" +sublink.Attributes["href"].Value);
                                        Console.WriteLine(sublink.InnerText);
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
        Console.ReadLine();
    }
}

}

上記から、コードの重複を減らし、C#でこれを行う方法を教えてください。ヘルプや情報をいただければ幸いです。

4

1 に答える 1