See the question and my original answer on StackOverflow

Something like this:

HtmlDocument doc = new HtmlDocument();
doc.Load(myDocHtm);

// get all LI elements with a CLASS attribute that starts with 'ajax_block_product'
foreach (HtmlNode selectNode in doc.DocumentNode.SelectNodes("//li[starts-with(@class,'ajax_block_product')]")) 
{
    // from the current node, get recursively the first A element with a CLASS attribute set to 'product_link'
    HtmlNode name = selectNode.SelectSingleNode(".//a[@class='product_link']");

    // from the current node, get recursively the first IMG element with a non empty SRC attribute
    HtmlNode img = selectNode.SelectSingleNode(".//img[@src]");

    // from the current node, get recursively the first SPAN element with a CLASS attribute set to 'price'
    // and get the child text node from it
    HtmlNode price = selectNode.SelectSingleNode(".//span[@class='price']/text()");

    shopItem item = new shopItem(
        name.InnerText,
        img.GetAttributeValue("src", null),
        double.Parse(price.InnerText, NumberStyles.Any)
        );
    itemsList.Add(item);
}