我希望能够从div中获得2个链接。
目前我可以选择一个,但是有更多它似乎不起作用。
HtmlWeb web = new HtmlWeb();
HtmlDocument doc = web.Load(url);
HtmlNode node = doc.DocumentNode.SelectSingleNode("//div[@class='myclass']");
if (node != null)
{
foreach (HtmlNode type in node.SelectNodes("//a@href"))
{
recipe.type += type.InnerText;
}
}
else
recipe.type = "Error fetching type.";
试图从这段HTML中获取它:
<div class="myclass">
<h3>Not Relevant Header</h3>
<a href="#">This text</a>,
<a href="#">and this text</a>
</div>
感谢任何帮助,提前致谢。
答案 0 :(得分:15)
var div = doc.DocumentNode.SelectSingleNode("//div[@class='myclass']");
if(div!=null)
{
var links = div.Descendants("a")
.Select(a => a.InnerText)
.ToList();
}
答案 1 :(得分:4)
使用此XPath:
//div[@class = 'myclass']//a
它使用a
抓取div
中所有后代class = 'myclass'
元素。
//a@href
是不正确的XPath。
答案 2 :(得分:2)
使用强>:
//div[contains(concat(' ', @class, ' '), ' myclass ')]//a
这将选择任何a
元素,该元素是div
属性包含类别class
的任何"myclass"
的后代。
类名可以是单个,或者属性也可以包含其他类名。在这种情况下,classname可以是起始的,也可以是最后一个,或者可以被其他类名包围 - 上面的XPath表达式在所有这些不同的情况下正确地选择了所需的节点。