2012-05-15 469 views
-1

我有這兩個功能。現在他們將從網址中下載並保存url變量中的特定圖像。如何從網站下載.cs文件?

但現在我想改變GetAllImages()函數的內容,並使用csFiles串網站從網站獲得的所有的.cs文件並將其保存到硬盤上。 所以我需要改變GetAllImages功能,並且還修改DownloadImage功能下載*的.cs文件,而不是圖像。

我該怎麼辦?

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"; 
      string csFiles = "http://open-hardware-monitor.googlecode.com/svn/trunk/Hardware/"; 

      // 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("sg_t") 
          select node).ToList();*/ 

      var imageLinks = doc.DocumentNode.Descendants("img") 
    .Where(n => n.Attributes["class"].Value == "sg_t") 
    .Select(n => HttpUtility.ParseQueryString(n.Attributes["src"].Value)["amp;url"]).ToList(); 


      foreach (string node in imageLinks) 
      { 
       y++; 
       //Console.WriteLine(node.Attributes["src"].Value); 
       richTextBox1.Text += node + Environment.NewLine; 
       Image t = DownloadImage(node); 
       t.Save(@"d:\test\" + y.ToString("D6" + ".jpg")); 

      } 


     } 


     public Image DownloadImage(string _URL) 
     { 
      Image _tmpImage = null; 

      try 
      { 
       // Open a connection 
       System.Net.HttpWebRequest _HttpWebRequest = (System.Net.HttpWebRequest)System.Net.HttpWebRequest.Create(_URL); 

       _HttpWebRequest.AllowWriteStreamBuffering = true; 

       // You can also specify additional header values like the user agent or the referer: (Optional) 
       //_HttpWebRequest.UserAgent = "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1)"; 
       //_HttpWebRequest.Referer = "http://www.google.com/"; 

       // set timeout for 20 seconds (Optional) 
       _HttpWebRequest.Timeout = 60000; 

       // Request response: 
       System.Net.WebResponse _WebResponse = _HttpWebRequest.GetResponse(); 

       // Open data stream: 
       System.IO.Stream _WebStream = _WebResponse.GetResponseStream(); 

       // convert webstream to image 
       _tmpImage = Image.FromStream(_WebStream); 

       // Cleanup 
       _WebResponse.Close(); 
       _WebResponse.Close(); 
      } 
      catch (Exception _Exception) 
      { 
       // Error 
       Console.WriteLine("Exception caught in process: {0}", _Exception.ToString()); 
       return null; 
      } 

      return _tmpImage; 
     } 
+0

你將不得不下載目錄列表並解析它以獲取文件的URL。對於解析,你可以嘗試使用HTML解析器,但使用像正則表達式這樣簡單的東西也可能在這裏工作。 – svick

回答