国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

dotNet使用HttpWebRequest模擬瀏覽器

2019-11-17 02:13:26
字體:
來源:轉載
供稿:網友

dotNet使用HttpWebRequest模擬瀏覽器

在編寫網絡爬蟲時,HttpWebRequest幾乎可以完成絕大多數網站的抓取,為了更好的使用這一技術,我將常用的幾個功能進行了封裝,以方便調用。這個類已經在多個項目中得到使用,主要解決了Cookies相關的一些問題;如果有其它方面的問題可以提出來,我會進一步完善。

目前HttpHelper包含了以下幾個方面:

  • GetHttpContent:通過Get或Post來獲取網頁的Html
  • SetCookie:根據response中頭部的set-cookie對cookie進行設置,能識別httponly
  • GetAllCookies:將CookieContainer轉換為鍵值對,方便存儲和跨程序間調用
  • ConvertToCookieContainer:將鍵值對轉換回CookieContainer供程序調用
  • BuildPostData:通過一個需要post的html構建出postdata

代碼如下:

  1 using System;  2 using System.Collections.Generic;  3 using System.Collections.Specialized;  4 using System.IO;  5 using System.IO.ComPRession;  6 using System.Linq;  7 using System.Net;  8 using System.Net.Security;  9 using System.Security.Cryptography.X509Certificates; 10 using System.Text; 11 using System.Text.RegularExpressions; 12 using System.Collections; 13 using HtmlAgilityPack; 14  15 namespace TNIdea.Common.Helper 16 { 17     public class HttpHelper 18     { 19         public const string CharsetReg = @"(meta.*?charset=""?(?<Charset>[^/s""'>]+)""?)|(xml.*?encoding=""?(?<Charset>[^/s"">]+)""?)"; 20  21         /// <summary> 22         /// 獲取網頁的內容 23         /// </summary> 24         /// <param name="url">Url</param> 25         /// <param name="postData">Post的信息</param> 26         /// <param name="cookies">Cookies</param> 27         /// <param name="userAgent">瀏覽器標識</param> 28         /// <param name="referer">來源頁</param> 29         /// <param name="cookiesDomain">Cookies的Domian參數,配合cookies使用;為空則取url的Host</param> 30         /// <param name="encode">編碼方式,用于解析html</param> 31         /// <returns></returns> 32         public static string GetHttpContent(string url, string postData = null, CookieContainer cookies = null, string userAgent = "", string referer = "", string cookiesDomain = "", Encoding encode = null) 33         { 34             try 35             { 36                 HttpWebResponse httpResponse = null; 37                 if (!string.IsNullOrWhiteSpace(postData)) 38                     httpResponse = CreatePostHttpResponse(url, postData, cookies: cookies, userAgent: userAgent, referer: referer); 39                 else 40                     httpResponse = CreateGetHttpResponse(url, cookies: cookies, userAgent: userAgent, referer: referer); 41  42                 #region 根據Html頭判斷 43                 string Content = null; 44                 //緩沖區長度 45                 const int N_CacheLength = 10000; 46                 //頭部預讀取緩沖區,字節形式 47                 var bytes = new List<byte>(); 48                 int count = 0; 49                 //頭部預讀取緩沖區,字符串 50                 String cache = string.Empty; 51  52                 //創建流對象并解碼 53                 Stream ResponseStream; 54                 switch (httpResponse.ContentEncoding.ToUpperInvariant()) 55                 { 56                     case "GZ

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 闽清县| 海淀区| 当涂县| 化德县| 金昌市| 宾阳县| 寻乌县| 隆安县| 石城县| 偃师市| 大足县| 泾川县| 千阳县| 新竹市| 海兴县| 凌源市| 和平区| 慈利县| 揭西县| 包头市| 兰州市| 拜泉县| 噶尔县| 旬阳县| 卓资县| 普兰店市| 泸州市| 镇远县| 孙吴县| 桐柏县| 皮山县| 民和| 琼中| 项城市| 定边县| 多伦县| 时尚| 明光市| 平阴县| 郯城县| 叙永县|