See the question and my original answer on StackOverflow

Here is how you can do this quite easily with XPATH. It's easy because the document is well structured and has meaningful CLASS attributes.

        HtmlWeb web = new HtmlWeb();
        HtmlDocument doc = web.Load("");

        foreach (HtmlNode node in doc.DocumentNode.SelectNodes("//div[@class='clr dayEvent']"))
            Console.WriteLine("Event: " + node.InnerText);

            HtmlNode genre = node.SelectSingleNode("../../div[@class='clr genreHeader']");
            Console.WriteLine(" Genre:" + HtmlAgilityPack.HtmlEntity.DeEntitize(genre.InnerText));

You can adapt this to your Event class. Inside the event text, it's not HTML so you have to parse it like you do in your Event code.

You can learn XPATH here: XPath Tutorial