正常访问状态! 设为首页 | 加入收藏夹 | 浏览历史  
  http://www.guosp.com
 碧海澜涛居
  海纳百川,有容乃大。壁立千刃,无欲则刚!
 
 
关键词:
  网站首页 | 关于本站 | 技术资料 | 美文日志 | 读书收藏 | 影视收藏 | 软件收藏 | 摄影相册| 留言板 
  技术资料 >> ASP.Net资料库 关闭(快捷键alt+C)
搜索标签: 抓取
c# 抓取网页分析(一)
[阅读次数:2097次]  [发布时间:2010年9月8日]
目的:
抓取网页,分析网页内容,进行处理获取信息。
例子:
抓km169上的adsl用户的费用信息,分析存储到本地数据库。
步骤:1、抓取。2、分析。3、存储。

王暴徒
1抓取

       public string GetPage(string url, string postData, out string err)
       {
         err = "";
                    
         Stream outstream = null;

         Stream instream = null;

         StreamReader sr = null;

         HttpWebResponse response = null;

         HttpWebRequest request = null;

         Encoding encoding = Encoding.Default;

         byte[] data = encoding.GetBytes(postData);

         // 准备请求...

         try
         {

            // 设置参数

            request = WebRequest.Create(url) as HttpWebRequest;

            CookieContainer cookieContainer = new CookieContainer();

            request.CookieContainer = cookieContainer;

            request.AllowAutoRedirect = true;

            request.Method = "POST";

            request.ContentType = "application/x-www-form-urlencoded";

            request.ContentLength = data.Length;

            outstream = request.GetRequestStream();

            outstream.Write(data, 0, data.Length);

            outstream.Close();

            //发送请求并获取相应回应数据

            response = request.GetResponse() as HttpWebResponse;

            //直到request.GetResponse()程序才开始向目标网页发送Post请求

            instream = response.GetResponseStream();

            sr = new StreamReader(instream, encoding);

            //返回结果网页(html)代码

            string content = sr.ReadToEnd();

            err = string.Empty;

            return content;

         }

         catch (Exception ex)
         {

            err = ex.Message;

            return string.Empty;

         }

       }


2、分析
       public string Get()
       {
         string str = GetPage(KMADSLURL, strReq, out err);

         Regex rgx = new Regex("table_det\\(\\n*\\s*\"([^\"]*)\",\\n*\\s*\"([^\"]*)\",\\n*\\s*\"([^\"]*)\",\\n*\\s*\"([^\"]*)\",\\n*\\s*\"([^\"]*)\",\\n*\\s*\"([^\"]*)\",\\n*\\s*\"([^\"]*)\",\\n*\\s*\"([^\"]*)\",\\n*\\s*\"([^\"]*)\",\\n*\\s*\"([^\"]*)\",\\n*\\s*\"([^\"]*)\"\\);", RegexOptions.Singleline);
         foreach (Match m in rgx.Matches(str))
         {

            Rec r = new Rec();
            r.str1 = m.Groups[1].Value;
            r.Save();
         }
         return null;
       }


此处的关键在于正则表达式,利用匹配关系获得一条条记录,再用%1~%9分组,得到每个字段的内容,最后生成相应的记录即可(拼sql也可),这里用了个持久化的咚咚,下次详细说。

正则技巧:用^(间隔符号)来划分字段,:)不大好解释,大家自己体会下吧。




本页地址: [复制地址]
该页内容非本站原创 收藏自:http://hi.baidu.com/cnyq/blog/item/7b964e3d41a51ae73d6d97cc.html
返回顶部 关闭(快捷键alt+C)
评论统计(0条)| 我要评论
暂无评论内容!
我要评论 
我要评论: 带*部分需要填写
 姓名称呼: * 请填写您的姓名或呢称
联系方式: QQ,MSN,Email都可以,方便交流 (仅管理员可见)
 评论内容: * 不超过100字符,50汉字
验证码:
    
  推荐链接
  最近更新  
·Host 'XXX' is not allowed...
·Win2008或IIS7的文件上传大...
·IIS7.0上传文件限制的解决方...
·测试信息2015-03-11
·asp.net中处理图片
·ASP.NET之Web打印-终极解决...
·Asp.net下C#调用Word模版实...
·asp.net下将页面内容导入到...
·asp.net导出为pdf文件
·asp.net生成pdf文件
·FCKeditor 文本编辑器的使用...
·ASP.NET 将数据生成PDF
·asp.net2.0导出pdf文件完美...
·AspJpeg的安装与测试
·JS验证浏览器版本对IE11的支...
  热门浏览  
·IE8和IE9出现“此网页上的问...
·无线路由器密码破解,教你断...
·js替换所有回车换行符
·QQ/MSN在线交流代码
·IE弹出“中国工商银行防钓鱼...
·如何取消键盘上的一些快捷键...
·win7声音小的解决方法
·webdav漏洞的利用
·强制两端对齐的函数或者CSS...
·win7下成功安装sql server ...
·显示器分辨率调的过高导致电...
·天诺时空技术技术论坛
·js验证手机号码格式
·JS展开和收缩效果(二)
·本地计算机上的 MSSQLSERVE...
  碧海澜涛居
网站首页关于本站站长简介开发案例技术资料美文日志摄影相册读书收藏影视收藏留言板
版权所有:碧海澜涛 QQ:410436434 Email:shaopo_guo@163.com 苏ICP备15000526号
免责声明:本站为个人网站,站内所有文字、图片等各类资料均为个人兴趣爱好所收集,不用作任何商业用途,亦不保证资料的真实性,若有因浏览本站内容而导致的各类纠纷,本站也不承担任何责任。本站部分内容来自互联网,如有涉及到您的权益或隐私请联系站长解决。