Get Links in class with html agility pack

c#, html-agility-pack

Solution

You can use LINQ:

var links = html.DocumentNode
           .Descendants("tr")
           .Where(tr => tr.GetAttributeValue("class", "").Contains("alt"))
           .SelectMany(tr => tr.Descendants("a"))
           .ToArray();

Note that this will also match `<tr class="Malto">`; you may want to replace the `Contains` call with a regex.

You could also use Fizzler:

html.DocumentNode.QuerySelectorAll("tr.alt a");

Note that both methods will also return anchors that aren't links.

Problem

There are a bunch of tr's with the class alt. I want to get all the links (or the first of last) yet i cant figure out how with html agility pack. I tried variants of a but i only get all the links or none. It doesnt seem to only get the one in the node which makes no sense since i am writing n.SelectNodes ``` html.LoadHtml(page); var nS = html.DocumentNode.SelectNodes("//tr[@class='alt']"); foreach (var n in nS) { var aS = n.SelectNodes("a"); ... } ```

Original source