C#Winformアプリケーションを使用してWebソースファイルを取得する方法

2860 ワード

C#Winformアプリケーションで、Webページのソースファイルを取得するには、次の方法を使用します.
まず名前空間using Systemを導入する.IO; using System.Net;

WebClient MyWebClient = new WebClient();
                 
MyWebClient.Credentials = CredentialCache.DefaultCredentials;//        Internet                
Byte[] pageData = MyWebClient.DownloadData("http://www.baidu.com");
//string pageHtml = Encoding.Default.GetString(pageData); 
 FileStream file = new FileStream("C:\\test.html", FileMode.Create);
 file.Write(pageData, 0, pageData.Length);

添付、c#はウェブページのソースコードのコード例を取得します.C#指定されたWeb HTMLの元のコードを取得するには、WebClient WebRequest HttpWebRequestの3つの方法が使用できます.もちろんwebBrowseも使えますし、興味のある方は、自分で検討してみてください.
1,WebClient方式

private string GetWebClient(string url)
{
  string strHTML = "";
  WebClient myWebClient = new WebClient();
  Stream myStream = myWebClient.OpenRead(url);
  StreamReader sr = new StreamReader(myStream, System.Text.Encoding.GetEncoding("utf-8"));
  strHTML = sr.ReadToEnd();
  myStream.Close();
  return strHTML;
}

2,WebRequest方式

private string GetWebRequest(string url)
{
  Uri uri = new Uri(url);
  WebRequest myReq = WebRequest.Create(uri);
  WebResponse result = myReq.GetResponse();
  Stream receviceStream = result.GetResponseStream();
  StreamReader readerOfStream = new StreamReader(receviceStream, System.Text.Encoding.GetEncoding("utf-8"));
  string strHTML = readerOfStream.ReadToEnd();
  readerOfStream.Close();
  receviceStream.Close();
  result.Close();
  return strHTML;
}

3,HttpWebRequest方式

private string GetHttpWebRequest(string url)
{
  Uri uri = new Uri(url);
  HttpWebRequest myReq = (HttpWebRequest)WebRequest.Create(uri);
  myReq.UserAgent = "User-Agent:Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.2; .NET CLR 1.0.3705";
  myReq.Accept = "*/*";
  myReq.KeepAlive = true;
  myReq.Headers.Add("Accept-Language", "zh-cn,en-us;q=0.5");
  HttpWebResponse result = (HttpWebResponse)myReq.GetResponse();
  Stream receviceStream = result.GetResponseStream();
  StreamReader readerOfStream = new StreamReader(receviceStream, System.Text.Encoding.GetEncoding("utf-8"));
  string strHTML = readerOfStream.ReadToEnd();
  readerOfStream.Close();
  receviceStream.Close();
  result.Close();
  return strHTML;
}

注意:「utf-8」は、指定したWebページの符号化に対応する必要があります.要約HttpWebRequest方式は最も複雑であるが,より多くの選択性を提供している.クライアントのUserAgentを検出するサイトもあります!163.comは、WebClient WebRequest方式で取得すると、エラーメッセージページの内容が取得されます.HttpWebRequestにはこの問題はありません.テスト環境:WIN 2003+VS 2005+C#+winForm