I want to be able to get 2 links from inside a div.
Currently I can select one but whene there's more it doesn't seem to work.
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.";
Trying to get it from this piece of HTML:
<div class="myclass">
<h3>Not Relevant Header</h3>
<a href="#">This text</a>,
<a href="#">and this text</a>
</div>
Any help is appreciated, Thanks in advance.
var div = doc.DocumentNode.SelectSingleNode("//div[@class='myclass']");
if(div!=null)
{
var links = div.Descendants("a")
.Select(a => a.InnerText)
.ToList();
}
Use this XPath:
//div[@class = 'myclass']//a
It grabs all descendant a
elements in div
with class = 'myclass'
.
And //a@href
is incorrect XPath.
Use:
//div[contains(concat(' ', @class, ' '), ' myclass ')]//a
This selects any a
element that is a descendant of any div
whose class
attribute contains a classname of "myclass"
.
The classname may be single, or the attribute may also contain other classnames. In this case the classname may be the starting one, or the last one or may be surrounded by other classnames -- the above XPath expression correctly selects the wanted nodes in all of these different cases.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With