且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

http协议-C#获取网页源代码

更新时间:2022-10-03 10:20:54

 


  1. 通过http协议C#获取网页源代码  
  2.  
  3. 方法一:  
  4.  
  5. using System.Text;  
  6. using System.Net;  
  7. private string getHtml(string url)  
  8. {  
  9. WebClient myWebClient = new WebClient();  
  10. byte[] myDataBuffer = myWebClient.DownloadData (url);  
  11. return Encoding.Default.GetString(myDataBuffer);  
  12. }  
  13.  
  14. 方法二:  
  15.  
  16. public string getHttp(string HttpUrl,string RefererUrl)  
  17. {  
  18. string html = "";  
  19. try  
  20. {  
  21. MSXML2.XMLHTTP Http = new MSXML2.XMLHTTPClass();  
  22. xmlhttp.open("GET", Url, false, null, null);  
  23. Http.open("GET",HttpUrl,false,null,null);  
  24. Http.setRequestHeader("Referer",RefererUrl);  
  25. //Http.setRequestHeader("Referer",RefererUrl);  
  26. Http.setRequestHeader("Content-Type", "text/html;charset=gb2312");  
  27. Http.send("");  
  28. html = Encoding.Default.GetString((byte[])Http.responseBody);  
  29. Http = null;  
  30. }  
  31. catch  
  32. {  
  33.  
  34. }  
  35. return html;  
  36. }  
  37.  
  38.    
  39.  
  40.    
  41.  
  42. public bool getweb(string strURL,out string buf)  
  43.   {  
  44.    buf="";  
  45.    try  
  46.    {  
  47.     //Uri url=new Uri(strURL,false);  
  48.     HttpWebRequest request;  
  49.     request = (HttpWebRequest)WebRequest.Create(strURL);  
  50.     request.Method="POST"; //Post请求方式  
  51.     request.ContentType="text/html;charset=gb2312"; //内容类型  
  52.     string paraUrlCoded = System.Web.HttpUtility.UrlEncode(""); //参数经过URL编码  
  53.     byte[] payload;  
  54.     payload = System.Text.Encoding.GetEncoding("GB2312").GetBytes(paraUrlCoded); //将URL编码后的字符串转化为字节  
  55.     request.ContentLength = payload.Length; //设置请求的ContentLength  
  56.     Stream writer = request.GetRequestStream(); //获得请求流  
  57.     writer.Write(payload,0,payload.Length); //将请求参数写入流  
  58.     writer.Close(); //关闭请求流  
  59.     HttpWebResponse response;  
  60.     response = (HttpWebResponse)request.GetResponse(); //获得响应流  
  61.     Stream s;  
  62.     s = response.GetResponseStream();  
  63.     StreamReader objReader = new StreamReader(s,System.Text.Encoding.GetEncoding("GB2312"));  
  64.     string HTML = "";  
  65.     string sLine ="";  
  66.     int i = 0;  
  67.     while (sLine!=null)  
  68.     {  
  69.      i++;  
  70.      sLine = objReader.ReadLine();  
  71.      if (sLine!=null)  
  72.       HTML += sLine;  
  73.     }  
  74.     //HTMLHTML = HTML.Replace("&lt;","<");  
  75.     //HTMLHTML = HTML.Replace("&gt;",">");  
  76.     buf=HTML;  
  77.     return true;  
  78.    }  
  79.    catch (Exception x)  
  80.    {     
  81.     buf=x.Message.ToString();  
  82.     return false;      
  83.    }  
  84.   }  
  85.    
  86. 带Cookie:  
  87. CookieContainer cc = new CookieContainer();  
  88. public bool getweb(string strURL,out string buf)  
  89.   {  
  90.    buf="";  
  91.    try  
  92.    {  
  93.     HttpWebRequest request;  
  94.     request = (HttpWebRequest)WebRequest.Create(strURL);  
  95.     request.Method="POST"; //Post请求方式  
  96.     request.ContentType="text/html;charset=gb2312"; //内容类型  
  97.     string paraUrlCoded = System.Web.HttpUtility.UrlEncode(""); //参数经过URL编码  
  98.     byte[] payload;  
  99.     payload = System.Text.Encoding.GetEncoding("GB2312").GetBytes(paraUrlCoded); //将URL编码后的字符串转化为字节  
  100.     request.ContentLength = payload.Length; //设置请求的ContentLength  
  101.     Stream writer = request.GetRequestStream(); //获得请求流  
  102.     writer.Write(payload,0,payload.Length); //将请求参数写入流  
  103.     writer.Close(); //关闭请求流  
  104.     HttpWebResponse response;  
  105.     response = (HttpWebResponse)request.GetResponse(); //获得响应流  
  106.     Stream s;  
  107.     s = response.GetResponseStream();  
  108.     StreamReader objReader = new StreamReader(s,System.Text.Encoding.GetEncoding("GB2312"));  
  109.     string HTML = "";  
  110.     string sLine ="";  
  111.     int i = 0;  
  112.     while (sLine!=null)  
  113.     {  
  114.      i++;  
  115.      sLine = objReader.ReadLine();  
  116.      if (sLine!=null)  
  117.       HTML += sLine;  
  118.     }   
  119.  
  120.     buf=HTML;  
  121.     return true;  
  122.    }  
  123.    catch (Exception x)  
  124.    {     
  125.     buf=x.Message.ToString();  
  126.     return false;      
  127.    }  
  128.   }  
  129.   public bool getweb(string strURL,out string buf,string postData)  
  130.   {  
  131.    buf="";  
  132.    try  
  133.    {     
  134.       
  135.     ASCIIEncoding encoding = new ASCIIEncoding();  
  136.     byte[] data = encoding.GetBytes(postData);  
  137.     HttpWebRequest request = (HttpWebRequest)WebRequest.Create(strURL);  
  138.     request.Method = "POST";  
  139.     request.ContentType = "application/x-www-form-urlencoded";  
  140.     request.ContentLength = data.Length;  
  141.     Stream newStream = request.GetRequestStream();  
  142.     newStream.Write(data, 0, data.Length);  
  143.     newStream.Close();  
  144.                      
  145.     request.CookieContainer = cc;  
  146.                      
  147.     HttpWebResponse response = (HttpWebResponse)request.GetResponse();  
  148.     cc.Add(response.Cookies);  
  149.     Stream stream = response.GetResponseStream();  
  150.     string sHtml = new StreamReader(stream, System.Text.Encoding.Default).ReadToEnd();  
  151.     buf=sHtml;  
  152.     return true;  
  153.    }  
  154.    catch (Exception x)  
  155.    {     
  156.     buf=x.Message.ToString();  
  157.     return false;      
  158.    }  
  159.   }  
  160.  
  161. private   string   getWebresourceFile1(string   url)  
  162.     {  
  163.      
  164. WebClient   myWebClient   =   new   WebClient();      
  165. byte[]   myDataBuffer   =   myWebClient.DownloadData(url);  
  166. string   SourceCode   =   Encoding.Default.GetString(myDataBuffer);  
  167. saveSourceCode(SourceCode);  
  168.                   return   SourceCode;  
  169.       }  
  170.  
  171. 方法2  
  172. private   string   getWebresourceFile2(string   url)  
  173.     {  
  174. HttpWebRequest   request=(HttpWebRequest)WebRequest.Create(url);    
  175. HttpWebResponse   response=(HttpWebResponse)request.GetResponse();    
  176.                   request.Method   =   "GET ";          
  177. Stream   receiveStream=response.GetResponseStream();  
  178. StreamReader   readStream=new   StreamReader(receiveStream,Encoding.Default);  
  179. string   SourceCode=readStream.ReadToEnd();      
  180. saveSourceCode(SourceCode);  
  181. response.Close();        
  182. readStream.Close();  
  183. return   SourceCode;  
  184.  
  185.       }  
  186. 方法3  
  187. private   string   getWebresourceFile3(string   url)  
  188.       {  
  189. WebClient   wc   =   new   WebClient();  
  190. wc.Credentials   =   CredentialCache.DefaultCredentials;  
  191. Byte[]   pageData   =   wc.DownloadData(url);  
  192. string   SourceCode   =   Encoding.Default.GetString(pageData);  
  193. saveSourceCode(SourceCode);  
  194. wc.Dispose();    
  195. return   SourceCode;  
  196.       }  
  197.  
  198. 方法4  
  199. private   string   getWebresourceFile4(string   url)  
  200.     {  
  201. WebClient   wc   =   new   WebClient();  
  202. wc.Credentials   =   CredentialCache.DefaultCredentials;  
  203. Stream   resStream   =   wc.OpenRead(url);  
  204. StreamReader   sr   =   new   StreamReader(resStream,System.Text.Encoding.Default);  
  205.  
  206. string   SourceCode   =   sr.ReadToEnd();  
  207. saveSourceCode(SourceCode);  
  208. resStream.Close();  
  209. wc.Dispose();    
  210. return   SourceCode;  
  211.       }  
  212. 方法5  
  213. private   string   getWebresourceFile5(string   url)  
  214.       {  
  215. WebRequest   request   =   WebRequest.Create(url);  
  216. WebResponse   response   =   request.GetResponse();  
  217. Stream   resStream   =   response.GetResponseStream();    
  218. StreamReader   sr   =   new   StreamReader(resStream,   System.Text.Encoding.Default);  
  219. string   SourceCode   =     sr.ReadToEnd();  
  220. saveSourceCode(SourceCode);  
  221. resStream.Close();    
  222. sr.Close();  
  223. return   SourceCode;  
  224.       } 

 

本文转自linzheng 51CTO博客,原文链接:http://blog.51cto.com/linzheng/1079268