클래스 alt와 함께 tr의 무리가 있습니다. 나는 모든 링크 (또는 마지막 첫 번째)를 얻고 싶다. 그러나 html 민첩성 팩을 사용하는 방법을 이해할 수 없다.
나는 변종을 시도했지만 모든 링크 또는 아무것도 얻지 못했습니다. 그것은 나에게 n.SelectNodes를 쓰고 있기 때문에 의미가없는 노드에있는 노드를 얻는 것만으로 보인다.
html.LoadHtml(page);
var nS = html.DocumentNode.SelectNodes("//tr[@class='alt']");
foreach (var n in nS)
{
var aS = n.SelectNodes("a");
...
}
LINQ를 사용할 수 있습니다.
var links = html.DocumentNode
.Descendants("tr")
.Where(tr => tr.GetAttributeValue("class", "").Contains("alt"))
.SelectMany(tr => tr.Descendants("a"))
.ToArray();
이 또한 <tr class="Malto">
와 일치합니다. Contains
호출을 정규식으로 대체 할 수 Contains
.
Fizzler 를 사용할 수도 있습니다.
html.DocumentNode.QuerySelectorAll("tr.alt a");
두 방법 모두 링크가 아닌 앵커를 반환합니다.
단일 쿼리에서 모든 링크를 선택하지 않는 이유는 무엇입니까?
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>