我目前使用尝试以使用HtmlAgilityPack从HTML页面提取特定链接。我尝试使用纯C#来强制我的方式,但结果是一个真正的痛苦。这些链接都在<div>
里面,所有标签都具有相同的类别。下面是我有:使用HtmlAgilityPack检索特定网址C#
HtmlWeb web = new HtmlWeb();
HtmlDocument html = web.Load(url);
//this should select only the <div> tags with the class acTrigger
foreach (HtmlNode node in html.DocumentNode.SelectNodes("//div[@class='acTrigger']"))
{
//not sure how to dig further in to get the href values from each of the <a> tags
}
和网站代码看起来沿着这
<li>
<div class="acTrigger">
<a href="/16014988/d/" onclick="return queueRefinementAnalytics('Category','Battery')">
Battery <em> (1)</em>
</a>
</div>
</li>
<li>
<div class="acTrigger">
<a href="/15568540/d/" onclick="return queueRefinementAnalytics('Category','Brakes')">
Brakes <em> (2)</em>
</a>
</div>
</li>
<li>
<div class="acTrigger">
<a href="/11436914/d/1979-honda-ct90-cables-lines" onclick="return queueRefinementAnalytics('Category','Cables/Lines')">
Cables/Lines <em> (1)</em>
</a>
</div>
</li>
有很多的这个页面上的链接线,但href
我需要包含这些<a>
内标签嵌套在<div class="acTrigger">
标签内。这很简单,如果每个<a>
共享独特的类,但不幸的是只有<div>
标签有类。我需要做的是抓住这些href
中的每一个并将它们存储起来,以便稍后可以检索它们,转到每个页面并从每个页面检索更多信息。我只需要在正确的方向上轻轻一点就可以克服这个麻烦,那么我也应该能够完成其他页面。我以前没有使用过这个HtmlAgilityPack的经验,我发现的所有例子似乎都想从页面中提取所有的URL,而不是特定的。我只需要一个链接到一个例子或文档,任何帮助非常感谢。
完美答案!/a让我进入标记,并且node.GetAttributeValue为我抽出字符串。太感谢了!你知道任何有用的信息来了解SelectNodes的语法是如何工作的吗?这有点怪异 –
@KevinD如果我记得正确,它使用Xpath。 https://www.w3schools.com/xml/xpath_intro.asp – Tim