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");
...
}
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.