利用HttpWebRequest自动抓取51la统计数据

最近在开发公司的OA系统,领导要求公司旗下所有网站的51拉统计数据能自动抓取到我们自己的数据库中,心想这种抓取统计数据的程序以前肯定有人写过,到百度搜了一下没有找到抓取51la的,于是乎自己动手。 1、利用httpwatch找到网站入口及参数:(详情略,请百度httpwatch的使用方法) 2、利用httpwebRequest将51拉查看密码Post到网站入口,登陆成功后再进入你想要进入的页面抓取页面 /// /// 某日或者叫时间段,51la里组员ID里——搜索引擎内——的数据。 /// /// /// /// /// /// public string FiveLaSeo(string strStaticId, string LookPass,string strBeginDate,string strEndDate) { CookieContainer Cc = new CookieContainer(); ASCIIEncoding encoding = new ASCIIEncoding(); string postData = "id=" + strStaticId; postData += ("&lookpass=" + LookPass); postData += "&t=chalogin"; //将提交的字符串数据转换成字节数组 byte[] data = encoding.GetBytes(postData); // 设置提交的相关参数 HttpWebRequest myRequest = (HttpWebRequest)WebRequest.Create("http://www.51.la/report/0_help.asp"); myRequest.Method = "POST"; myRequest.ContentType = "application/x-www-form-urlencoded"; myRequest.ContentLength = data.Length; //cookie的容器一定要加 myRequest.CookieContainer = Cc; // 提交请求数据 Stream newStream = myRequest.GetRequestStream(); newStream.Write(data, 0, data.Length); newStream.Close(); // 接收返回的页面 HttpWebResponse myResponse = (HttpWebResponse)myRequest.GetResponse(); StreamReader reader = new StreamReader(myResponse.GetResponseStream(), Encoding.Default); string content = reader.ReadToEnd(); //进去后打开特定页面的参数设置 myRequest = (HttpWebRequest)WebRequest.Create("http://www.51.la/report/3_SE.asp?id=" + strStaticId + "&d1=" + strBeginDate + "&d2=" + strEndDate); myRequest.Method = "GET"; myRequest.KeepAlive = false; myRequest.CookieContainer = Cc; //接收返回的特定页面 myResponse = (HttpWebResponse)myRequest.GetResponse(); newStream = myResponse.GetResponseStream(); reader = new StreamReader(myResponse.GetResponseStream(),Encoding.Default); content = reader.ReadToEnd(); return content; } 3、将抓取的页面进行正则表达式匹配,取出自己所需要的数据(这里我需要搜索引擎流量) /// /// 返回51拉中:搜索引擎的访问量IP-*?表示匹配最少的重复项目 /// /// /// /// /// /// public string FivelaSeoPv(string strStaticId, string LookPass,string strBeginDate,string strEndDate) { Tool.FiveLa fl = new FiveLa(); string html=fl.FiveLaSeo(strStaticId, LookPass, strBeginDate, strEndDate); string pattern = @"来自搜索引擎的访问量 /( [/s/S]*? IP /) 占总访问量"; //string pattern = @"占总访问量"; string number = Regex.Match(html, pattern, RegexOptions.IgnoreCase).Value; number = number.Replace("来自搜索引擎的访问量 (", "").Replace(" IP )", "").Replace("占总访问量","").Trim(); ; if (number == "") { number = "0"; } return number; } 4、最后来看看利用ActiveReport显示取得数据的效果。

 

 

from: http://www.cnblogs.com/showker/archive/2009/06/29/1513054.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
这个流量统计是非常简单的,但我个人觉得也是挺实用的 这个也是我目前自己站用的流量统计 为什么做这个小东西,是因为,之前我用过某个知名的流量统计,但有几天突然就打不开了, 搞的我网页的下部分也跟着打不开,网页打开进度一直显示在加载,效果很不好 也用过有的流量统计,给插了广告之类, 同时我的站也是生成HTML,做站的都知道,批量生成HTML简直是要命的,如果今天我用了某个流量统计 那天他不做了,那我那些页面里面加载的代码是不是还都得重新做次? 当然,网上如cnzz.com,51la等等统计都是很不错的,功能齐全,同时可以代表一定的客观性,总而言之 适合自己的就好! 程序很简单 可以显示显示的来访IP,地区,一个简单的曲线表,一个概述,以及来访域名,和搜索引擎关键词等 简单而实用 adminstat.asp 是管理页面,就一个 mystat.asp和stat.asp 是统计流量的文件 DATA里面当然是数据库啦,数据库很大,有30多MB,因为里面加了IP地址的数据库,有30多万条,是我之前 商贸版IP地址查询里面,有兴趣的可以取下,以后会考虑分离掉,因为我现在自己用的是SQL的,所以不太 存在数据库文件大的问题,所以这边我暂时懒得改,以后有时间把IP地址库和数据库分离 调用: 当然你前面最好加上域名,比如我站里是: 关于删除历史的解释,系统会把每个访问的IP都记录下来,但为了系统效率,我们只记录3天内的详细IP 为了方便大家整合到自己的站里,我没有加任何的广告啊,还有adminstat.asp 后台管理的权限限制,如果大家要整合到自己站里 注意给访问页面添加权限

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值