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

简介:

 

 
  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


相关文章
|
4月前
|
数据采集 数据可视化 API
QUIC协议优化:HTTP/3环境下的超高速异步抓取方案
本文介绍了一种基于QUIC和HTTP/3的异步爬虫方案,用于抓取知乎热榜数据并生成趋势图。通过HTTPX与aioquic结合实现高性能连接复用,配合代理IP绕过反爬限制,提取标题、热度等信息。利用Python代码示例展示了异步抓取流程,并借助Matplotlib绘制话题热度变化图表。分析显示突发热点生命周期短,而深度话题热度更稳定。此方案可优化内容运营策略,快速捕捉潜在爆款话题。
169 4
QUIC协议优化:HTTP/3环境下的超高速异步抓取方案
|
2月前
|
缓存 监控 搜索推荐
301重定向实现原理全面解析:从HTTP协议到SEO最佳实践
301重定向是HTTP协议中的永久重定向状态码,用于告知客户端请求的资源已永久移至新URL。它在SEO中具有重要作用,能传递页面权重、更新索引并提升用户体验。本文详解其工作原理、服务器配置方法(如Apache、Nginx)、对搜索引擎的影响及最佳实践,帮助实现网站平稳迁移与优化。
421 68
|
27天前
HTTP协议中请求方式GET 与 POST 什么区别 ?
GET和POST的主要区别在于参数传递方式、安全性和应用场景。GET通过URL传递参数,长度受限且安全性较低,适合获取数据;而POST通过请求体传递参数,安全性更高,适合提交数据。
299 2
|
2月前
|
存储 网络协议 安全
HTTP 协议及会话跟踪机制详解
本文详解了 HTTP 协议的核心知识,包括其定义(超文本传输协议,基于 TCP,规定客户端与服务器通信规则)及与 HTTPS 的区别(安全性、端口、资源消耗)。 介绍了 GET 与 POST 请求的差异(参数限制、安全性、应用场景),以及 Restful 风格(通过 URL 定位资源,请求方式决定操作)。列举了常见 HTTP 状态码(如 200 成功、404 资源未找到),对比了转发与重定向的区别(服务器端一次请求 vs 客户端两次请求)。 还阐述了会话跟踪机制:Cookie 基于客户端存储,通过Set-Cookie和Cookie头实现,安全性较低;Session 基于服务端存储,依赖 C
227 1
|
1月前
|
缓存 网络协议 UED
深度解析HTTP协议从版本0.9至3.0的演进和特性。
总的来说,HTTP的演进是互联网技术不断发展和需求日益增长的结果。每一次重要更新都旨在优化性能,增进用户体验,适应新的应用场景,而且保证了向后兼容,让互联网的基础架构得以稳定发展。随着网络技术继续进步,我们可以预期HTTP协议在未来还会继续演化。
334 0
|
2月前
|
XML 安全 网络架构
深度对比SOAP与HTTP协议:详细理解它们的工作原理和差异
在设计服务和系统交云策略时,考虑到上述差异是至关重要的。SOAP适合需要高安全性、可靠性和事务支持的企业级应用。而HTTP适合Web界面浏览、RESTful服务和需要快速响应的轻量级通信。根据具体需求和上下文,开发者可以选择合适的协议以实现最优的系统性能和用户体验。
280 0
|
3月前
|
缓存
HTTP协议深度剖析:常见请求头信息讲解
这就是HTTP请求头背后的工作原理,希望通过比作“邮差”和“标签”,可以让你对这个繁琐技术更有感触,更得心应手。尽管这些信息可能很琐碎,但了解了它们的含义和工作方式,就等于揭开了HTTP协议神秘的面纱,掌控了网络交流的核心。你还等什么,赶快动手尝试一下吧!
123 17
|
2月前
HTTP协议中常见的状态码 ?
HTTP协议状态码分为1xx、2xx、3xx、4xx、5xx五类。常见状态码包括:101(切换协议)、200(请求成功)、302(重定向)、401(未认证)、404(资源未找到)、500(服务器错误)。
267 0
|
3月前
HTTP协议探究:常用方法一网打尽
总的来说,HTTP协议的命令犹如一把钥匙,解锁了互联网世界的大门。它是规则,也是工具,了解了它,就等于掌握了互联网的一把通行证。我们每天都在用,也常常无视它,但是只有深刻理解了它,才能更好地运用它。如此,我们的互联网世界旅程就会变得更加顺畅,更加有趣。
106 14