如果你要搞個 spider 或是 bot,需要讀取網頁的話,用 WebClient 就綽綽有餘了~
using System.Net;
public class Network
{
public static string wget( string url )
{
WebClient _client=new WebClient();
string result="";
try {
// 藉著修改 Header,可以用來模擬某特定 Browser,以下是模擬 IE 6
_client.Headers.Add("Accept","image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, */*");
_client.Headers.Add("Accept-Language","zh-tw");
_client.Headers.Add("User-Agent","Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.2; SV1; .NET CLR 1.1.4322; .NET CLR 2.0.50727)");
// 表示支援壓縮,也就是說,你可以丟壓縮過的資料過來,我來解~
//_client.Headers.Add("Accept-Encoding","gzip, deflate");
// read
System.IO.Stream objStream=_client.OpenRead( url );
// 要知道正確的編碼,再去讀取~.Net會幫我們自動轉為 unicode 字串。這邊預設都是 UTF8
System.IO.StreamReader _reader=new System.IO.StreamReader(objStream,System.Text.Encoding.UTF8);
//System.IO.StreamReader _reader=new System.IO.StreamReader(objStream,System.Text.Encoding.GetEncoding(950));
result = _reader.ReadToEnd();
}
catch( Exception ex ) {
throw ex;
}
finally {
}
return result;
}
}
所以我們就可以這麼用
Console.WriteLine( Network.wget("http://www.google.com.tw") );
目前有個決定性的缺點:必須先知道網頁編碼,我們才能讀到正確的文字~有辦法先知道網頁的編碼,再去決定要怎麼讀取嗎?
沒有留言:
張貼留言