我想从网站上获取数据。我正在使用HtmlAgilityPack。在网站上的内容是这样的
<div id="list">
<div class="list1">
<a href="example1.com" class="href1" >A1</a>
<a href="example4.com" class="href2" />
</div>
<div class="list2">
<a href="example2.com" class="href1" >A2</a>
<a href="example5.com" class="href2" />
</div>
<div class="list3">
<a href="example3.com" class="href1" >A3</a>
<a href="example6.com" class="href2" />
</div>
</div>
现在,我想获取前两个具有class =“href1”的链接。我正在使用代码。
HtmlNodeCollection nodes = doc.DocumentNode.SelectNodes("//a[@class='href1'][position()<3]");
但是,它没有用。它给出了所有三个链接。我想只获取前两个链接。怎么做?
喂!现在我也要做一件事。
上面,我只有三个链接class =“href1”。假设,我有10个与class =“href1”的链接。我想从第6个链接到第9个链接只获取4个链接。如何获取这些特定的四个链接?
答案 0 :(得分:1)
尝试在应用position()
函数之前将锚选择器包装在括号中:
var nodes = doc.DocumentNode.SelectNodes("(//a[@class='href1'])[position()<3]");
答案 1 :(得分:0)
为什么不直接使用返回的集合中的前两个?无论你需要做什么xpath,最终都会比使用LINQ更难以理解:
using System.Linq;
...
HtmlNodeCollection firstTwoHrefs = doc.DocumentNode
.SelectNodes("//a[@class='href']").Take(2);