我正在尝试使用HtmlAgilityPack从网页上的一组图像中获取图像src =“”值,并将它们添加到字符串列表中。
我已尝试过以下内容,但我没有收回img标签。
Dim htmlDoc As New HtmlDocument()
htmlDoc.LoadHtml(GetPage(New Uri(product.Link)))
For Each imageShow As HtmlNode In htmlDoc.GetElementbyId("slideShow").ChildNodes
For Each image In imageShow.Elements("img")
Console.WriteLine(image.Attributes("src").Value)
product.OtherImages.Add(image.Attributes("src").Value)
Next
Next
网页如下。
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
...
</head>
<body>
....
<div id="slideShow" class="slideShow">
<div class="slides">
<div class="slide">
<a href="http://mywebsite.com/images/some1.jpg">
<img src="http://mywebsite.com/images/some1.jpg" />
</a>
<div>
<div class="slide">
<a href="http://mywebsite.com/images/some2.jpg">
<img src="http://mywebsite.com/images/some2.jpg" />
</a>
<div>
...
</div>
<div>
....
</body>
</html>
我期待image.Attributes(“src”)。值为“http://mywebsite.com/images/some1.jpg”
答案 0 :(得分:0)
我不知道xPath组件,并且能够使用下面的表达式选择节点。
Dim htmlDoc As New HtmlDocument()
htmlDoc.LoadHtml(GetPage(New Uri(product.Link)))
For Each slidesNode In htmlDoc.DocumentNode.SelectNodes("//div[@id='slideShow']//div[@class='slides']")
For Each slide In slidesNode.SelectNodes(".//div[@class='slide']")
Console.WriteLine(slide.SelectSingleNode(".//a//img").Attributes("src").Value)
Next
Next
我不确定是否有更快或更好的方式来访问幻灯片节点中的每个图像,但这似乎现在有效。