По идее, главное уметь строить XPath выражения.
С ними очень легко получить любую информацию, которая хотя бы как то типизирована, к примеру:
var pageNodes = document.DocumentNode.SelectNodes("//div[@id=\"pagination_related\"]//a");
if (pageNodes != null)
{
foreach (var node in pageNodes)
pages.Add(new Uri(this.Uri + node.Attributes[0].Value));
pages = pages.Distinct().ToList();
}
Из того, что не очевидно - для запроса данных внутри ноды надо использовать точку перед xpath:
var chapterNodes = document.DocumentNode.SelectNodes("//div[@class=\"related_info\"]");
if (chapterNodes != null)
{
foreach (var node in chapterNodes)
{
var link = node.SelectSingleNode(".//h2//a");
var desc = node.SelectSingleNode(".//div[@class=\"related_tag_list\"]");
chapters.Add(new Chapter(new Uri(this.Uri, link.Attributes[0].Value), desc.InnerText));
}
}