Получите Ссылки в классе с пакетом гибкости HTML

Существует набор TR с высоким звуком класса. Я хочу получить все ссылки (или первый из последних) все же, я не могу выяснить, как с HTML гибкость упаковывает.

Я попробовал варианты a, но я только получаю все ссылки или ни один. Это, кажется, только не получает тот в узле, который не имеет никакого смысла, так как я пишу n. SelectNodes

html.LoadHtml(page);
var nS = html.DocumentNode.SelectNodes("//tr[@class='alt']");
foreach (var n in nS)
{
  var aS = n.SelectNodes("a");
  ...
}
13
задан Oded 18 May 2010 в 13:57
поделиться

2 ответа

Вы можете использовать LINQ:

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

Обратите внимание, что это также будет соответствовать ; возможно, вы захотите заменить вызов Contains на regex.

Вы также можете использовать Fizzler:

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

Обратите внимание, что оба метода также возвращают якоря, которые не являются ссылками.

15
ответ дан 1 December 2019 в 21:24
поделиться

Почему не выбрать все ссылки в одном запросе:

html.LoadHtml(page);
var nS = html.DocumentNode.SelectNodes("//tr[@class='alt']//a");
foreach(HtmlNode linkNode in nS)
{
//do something
}

Это действительно для html:

<table>
<tr class = "alt">
<td><'a href="link.html">Some Link</a></td>
</tr>
</table>
11
ответ дан 1 December 2019 в 21:24
поделиться
Другие вопросы по тегам:

Похожие вопросы: