WEB开发网
开发学院WEB开发ASP.NET 请求网址并解析返回的html 阅读

请求网址并解析返回的html

 2006-06-20 17:09:08 来源:WEB开发网   
核心提示:目的,把远程服务器传回的Html,请求网址并解析返回的html,解析到类里面,为GridView等提供数据源1 、向远程服务器Post数据public int PostData(string url, string data, out string info) { info = ""; Coo

目的,把远程服务器传回的Html,解析到类里面,为GridView等提供数据源
1 、向远程服务器Post数据
public int PostData(string url, string data, out string info)
     {

     info = "";
       CookieContainer cc = new CookieContainer();
       HttpWebRequest request = WebRequest.Create(url) as HttpWebRequest;
       request.CookieContainer = cc;
       request.Method = "POST";
       request.ContentType = "application/x-www-form-urlencoded";
       Stream requestStream = request.GetRequestStream();
       byte[] byteArray = Encoding.UTF8.GetBytes(data);
       requestStream.Write(byteArray, 0, byteArray.Length);
       requestStream.Close();
       HttpWebResponse response = request.GetResponse() as HttpWebResponse;
       Uri responseUri = response.ResponseUri;
       Stream receiveStream = response.GetResponseStream();
       Encoding encode = System.Text.Encoding.GetEncoding("utf-8");
       StreamReader readStream = new StreamReader(receiveStream, encode);
       string result = readStream.ReadToEnd();
       info = result;
       return 0;

   }2、解析返回的html,有省略
 public ClassInfo[] GetClass(string html)
     {

     ArrayList ar = new ArrayList();
       ArrayList arr = new ArrayList();
       string table = "";
       Regex regtable = new Regex(@"(?<=<table.*>).*?(?=</table>)", RegexOptions.Singleline);
       Match ma = regtable.Match(html);
       while (ma.Success)
       {
         if (ma.Value.Trim() != "")
         {
           arr.Add(HttpUtility.HtmlDecode(ma.Value));
         }
         ma = ma.NextMatch();
       }
       for (int i = 0; i < arr.Count; i++)
       {
         table = arr[i].ToString() + table;
       }


       Regex reg = new Regex(@"(?<=<.*?>).*?(?=<.*?>)", RegexOptions.Singleline);
       Match m = reg.Match(table);


       while (m.Success)
       {
         if (m.Value.Trim() != "")
         {

         ar.Add(HttpUtility.HtmlDecode(m.Value));
         }
         m = m.NextMatch();
       }


      ClassInfo[] ci = new ClassInfo[classno];
       for (int i = 0; i < classno; i++)
       {
         ci[i] = new ClassInfo();
         ci[i].RegisterDate = (ar[i * 8 + 0]).ToString();

       ci[i].LoginDate = (ar[i * 8 + 1]).ToString();
         ci[i].LogoutDate = (ar[i * 8 + 2]).ToString();
         ci[i].UseMin = ar[i * 8 + 3].ToString();
         ci[i].ClassName = ar[i * 8 + 5].ToString();
         ci[i].ClassType = ar[i * 8 + 6].ToString();
         ci[i].Percent = ar[i * 8 + 7].ToString();

     }

     return ci;


     }
3、定义ClassInfo类(课程类),用CodeSmith生成
 public class ClassInfo
   {
     Member Variables#region Member Variables


     PRotected string _loginDate;
     protected string _logoutDate;
     protected string _registerDate;
     protected string _useMin;
     protected string _className;
     protected string _classType;
     protected string _percent;
     //protected string _nouse;
     #endregion

   Constructors#region Constructors

   public ClassInfo() { }

   public ClassInfo(string loginDate, string logoutDate, string registerDate, string useMin, string className, string classType, string percent)
     {
       this._loginDate = loginDate;
       this._logoutDate = logoutDate;
       this._registerDate = registerDate;
       this._useMin = useMin;
       this._className = className;
       this._classType = classType;
       this._percent = percent;
     }

   #endregion

   Public Properties#region Public Properties
     //     public string NoUse
     //     {
     //       get{return _nouse;}
     //       set{ _nouse= value;}
     //     }

   public string LoginDate
     {
       get { return _loginDate; }
       set { _loginDate = value; }
     }

   public string LogoutDate
     {
       get { return _logoutDate; }
       set { _logoutDate = value; }
     }

   public string RegisterDate
     {
       get { return _registerDate; }
       set { _registerDate = value; }
     }

   public string UseMin
     {
       get { return _useMin; }
       set { _useMin = value; }
     }

   public string ClassName
     {
       get { return _className; }
       set
       {
         if (value != null && value.Length > 50)
           throw new ArgumentOutOfRangeException("Invalid value for ClassName", value, value.ToString());
         _className = value;
       }
     }

   public string ClassType
     {
       get { return _classType; }
       set
       {
         if (value != null && value.Length > 50)
           throw new ArgumentOutOfRangeException("Invalid value for ClassType", value, value.ToString());
         _classType = value;
       }
     }

   public string Percent
     {
       get { return _percent; }
       set
       {
         if (value != null && value.Length > 50)
           throw new ArgumentOutOfRangeException("Invalid value for Percent", value, value.ToString());
         _percent = value;
       }
     }

   #endregion
   }

http://bluewater.cnblogs.com/archive/2006/06/19/429720.html

Tags:请求 网址 解析

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接