我正在尝试从网站获取图像列表并将它们保存到硬盘,但它不起作用

本文关键字:保存 硬盘 不起作用 列表 图像 获取 网站 | 更新日期: 2023-09-27 18:34:23

我正在使用HtmlAgilityPack。

在此函数中,foreach 计数中的imageNodes为 0

我不明白为什么列表计数为 0

该网站包含许多图像。我想要的是从站点获取图像列表并在richTextBox1中显示列表,我还想将站点中的所有图像保存在硬盘上。

我该如何解决?

public void GetAllImages()
{
   // Bing Image Result for Cat, First Page
   string url = "http://www.bing.com/images/search?q=cat&go=&form=QB&qs=n";
   // For speed of dev, I use a WebClient
   WebClient client = new WebClient();
   string html = client.DownloadString(url);
   // Load the Html into the agility pack
   HtmlAgilityPack.HtmlDocument doc = new HtmlAgilityPack.HtmlDocument();
   doc.LoadHtml(html);
   // Now, using LINQ to get all Images
   List<HtmlNode> imageNodes = null;
   imageNodes = (from HtmlNode node in doc.DocumentNode.SelectNodes("//img")
                 where node.Name == "img"
                    && node.Attributes["class"] != null
                    && node.Attributes["class"].Value.StartsWith("img_")
                 select node).ToList();
   foreach (HtmlNode node in imageNodes)
   {
      // Console.WriteLine(node.Attributes["src"].Value);
      richTextBox1.Text += node.Attributes["src"].Value + Environment.NewLine;
   }
}

我正在尝试从网站获取图像列表并将它们保存到硬盘,但它不起作用

正如我所看到的,Bing图像的正确类是sg_t。可以使用以下 Linq 查询获取这些HtmlNodes

List<HtmlNode> imageNodes = doc.DocumentNode.Descendants("img")
    .Where(n=> n.Attributes["class"] != null && n.Attributes["class"].Value == "sg_t")
    .ToList();

此列表应填充所有img class = 'sg_t'

快速浏览代码中的示例页面/URL 会发现,您所追求的图像没有以"img_"开头的类类型。

<img class="sg_t" src="http://ts2.mm.bing.net/images/thumbnail.aspx?q=4588327016989297&amp;id=db87e23954c9a0360784c0546cd1919c&amp;url=http%3a%2f%2factnowtraining.files.wordpress.com%2f2012%2f02%2fcat.jpg" style="height:133px;top:2px">

我注意到您的代码仅针对重击钉子。您还需要全尺寸图像 URL,该 URL 位于每个缩略图周围的锚点中。您需要从如下所示的 href 中提取最终到达网址:

<a href="/images/search?q=cat&amp;view=detail&amp;id=89929E55C0136232A79DF760E3859B9952E22F69&amp;first=0&amp;FORM=IDFRIR" class="sg_tc" h="ID=API.images,18.1"><img class="sg_t" src="http://ts2.mm.bing.net/images/thumbnail.aspx?q=4588327016989297&amp;id=db87e23954c9a0360784c0546cd1919c&amp;url=http%3a%2f%2factnowtraining.files.wordpress.com%2f2012%2f02%2fcat.jpg" style="height:133px;top:2px"></a>

并解码如下所示的位: url=http%3a%2f%2factnowtraining.files.wordpress.com%2f2012%2f02%2fcat.jpg

解码为: http://actnowtraining.files.wordpress.com/2012/02/cat.jpg