从<div>内部获取列表图像网址

时间:2015-07-13 10:07:26

标签: vb.net html-agility-pack

我正在尝试使用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

1 个答案:

答案 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

我不确定是否有更快或更好的方式来访问幻灯片节点中的每个图像,但这似乎现在有效。