-1

我想从网站链接构建图像列表,然后再将图像保存/下载到硬盘。

这就是我从网站/网址获取链接的方式:

private List<string> getLinks(HtmlAgilityPack.HtmlDocument document)
        {

            List<string> mainLinks = new List<string>();
            var linkNodes = document.DocumentNode.SelectNodes("//a[@href]");
            if (linkNodes != null)
            {
                foreach (HtmlNode link in linkNodes)
                {
                    var href = link.Attributes["href"].Value;
                    if (href.StartsWith("http://") ==true || href.StartsWith("https://") ==true || href.StartsWith("www.") ==true) // filter for http 
                    {
                        mainLinks.Add(href);
                    }
                }
            }
            return mainLinks;

        }

然后我在这个测试函数中使用从 url 构建所有链接的列表:

private List<string> test(string url, int levels, DoWorkEventArgs eve)
        {

            HtmlWeb hw = new HtmlWeb();
            List<string> webSites;

                        try
            {
                doc = hw.Load(url);
                webSites = getLinks(doc);
                //retriveImages();

因此,作为列表的网站将包含来自主网站 url 的所有链接,例如,如果它的 google.com 则在网站中,我将有 19 个项目,每个项目都是来自 google.com 的链接

并且retrieveImages() 是:

private void retrieveImages()
        {
            var nodes = doc.DocumentNode.SelectNodes("//img");
            foreach (var node in nodes)
            {
                List<string> images = new List<string>();
                images.Add(node.Name);
            } 

        }

并且retrieveImages() 肯定不是好的代码,也不能正常工作。如果我使用它移动 // 并调用retrieveImages() 没有发生任何事情网站列表是空的。

我想要做的是在函数retrieveImages() 中从当前站点/链接中构建图像列表,然后将图像下载到硬盘上我构建的列表中的图像。

4

1 回答 1

0
private List<string> retrieveImages()
{
  List<string> imgList = new List<string>();
  HtmlDocument doc = new HtmlDocument();
  doc.Load("file.htm"); //or whatever HTML file you have
  HtmlNodeCollection imgs = doc.DocumentNode.SelectNodes("//img[@src]");
  if (imgs == null) return new List<string>();

  foreach (HtmlNode img in imgs)
  {
   if (img.Attributes["src"] == null)
      continue;
   HtmlAttribute src = img.Attributes["src"];

   imgList.Add(src.Value);
   //Do something with src.Value such as Get the image and save it locally
   // Image img = GetImage(src.Value)
   // img.Save(aLocalFilePath);
  }
return imgList;
}

private Image GetImage(string url)
{
    System.Net.WebRequest request = System.Net.WebRequest.Create(url);

    System.Net.WebResponse response = request.GetResponse();
    System.IO.Stream responseStream = response.GetResponseStream();

    Bitmap bmp = new Bitmap(responseStream);

    responseStream.Dispose();

    return bmp;
}
于 2012-09-14T05:44:12.143 回答