dinghao

记录成长点滴

 

请求网址并解析返回的html

目的,把远程服务器传回的Html,解析到类里面,为GridView等提供数据源
找出所有<td>或者<font>中的字符:(?<=<td.*>).+(?=</td>)|(?<=<font.*>).+(?=</font>)
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

        
Constructors

        
Public Properties
    }

posted on 2006-06-19 17:33 思无邪 阅读(472) 评论(1)  编辑 收藏 网摘 所属分类: ASP.NET


发表评论



姓名 [登录] [注册] 
主页
Email (仅博主可见) 
验证码 *  验证码看不清,换一张
内容(请不要发表任何与政治相关的内容)  
  登录  使用高级评论   新用户注册   返回页首      

导航: 网站首页 社区 新闻 博问 闪存 网摘 招聘 .NET频道 知识库 找找看 Google站内搜索



China-pub 计算机图书网上专卖店!6.5万品种 2-8折!
China-Pub 计算机绝版图书按需印刷服务

相关文章:

相关链接:
 

导航

统计

与我联系

搜索

 

常用链接

我参与的团队

随笔分类

随笔档案

收藏站点

文章收藏

积分与排名

最新评论

阅读排行榜