网管联盟 | 网管论坛 | 网管u家 | 网管博客 | 网管软件 | 网管求职 | 小游戏 | 网管搜索 | 网管原创 | 网管聚合 | 网管读摘 | 网管焦点 | 世界素材 | 会员投稿 | 会员中心 
中国网管联盟
Windows Linux Cisco 网络技术 数据库 黑客攻防 DotNet Java PHP 认证 新闻资讯 服务器 存储资讯 网络设备 网管学堂 技术专题 焦点 网吧频道
 当前位置: > bitsCN.com > DotNet > ASP.NET > 用asp.net实现根据IP获取当地天气预报  

用asp.net实现根据IP获取当地天气预报

2007-03-06  作者:bitsCN整理  来源:中国IT实验室收集整理  点评 投稿 收藏

 访问www.163.com,首页的栏目里有当地的天气预报。可以猜想,这里的天气预报,应该是根据来访者的ip判断其所在地给出当地的天气情况。问了一些朋友,也证实了这一点。项目里也需要天气预报这个小栏目,同事做过一个(从其他站点抓取的),不过实现不了根据IP显示当地的天气情况,需要用户自行选择,而且抓取的站点属于小站….其可靠性值得怀疑。。所以就萌生了抓取网易的天气预报的想法。。。对页面进行分析。。发现显示天气预报的区域是一个IFrame,IFrame里嵌入了如下链接http://news.163.com/util/position1.html, 对这个地址访问直接跳转到另外一个链接http://news.163.com/weather/news/qx1/56294.html,此链接显示了天气情况,如图:

ASP.NET:根据IP获取当地天气预报的实现 网管u家u.bitscn@com

  由此可以推测http://news.163.com/util/position1.html,是在根据来访者的IP判断所属区域,然后返回一个该地区所对应的区位码,如: 56294代表成都。如何让网易来帮我们的站点来访者判断所属区域,并给出天气情况,并显示在自己的站点页面上呢?还得继续分析。。因为http://news.163.com/util/position1.html,此链接一访问就转向到天气情况的链接,而无法查看源码。便猜想。。此页面肯定有些东西。。无奈之下。。WebRequest一下,出现了如下代码:

网管bitscn_com

网管bitscn_com

 1<script language="Javascript">  
 2var city = new Array("安徽","黑龙江","山东","北京","湖北","山西","福建","湖南","陕西","甘肃","吉林","上海","广东","江苏","四川","广西","江西","天津","贵州","辽宁","西藏","海南","内蒙古","新疆","河北","宁夏","云南","河南","青海","浙江","重庆");  
 3var weaths = new Array('58321','50953','54823','54511','57494','53772','59134','57679','57036','52889','54172','58367',
'59287','58238','56294','59431','58606','54527','57816','54342','55591','52856','53463','51463','53698','53614','56778',
'57083','52866','58457','57516'); 
 4 
 5function getCookieVal (offset) { 
 6  var endstr = document.cookie.indexOf (";", offset); 
 7  if (endstr == -1) 
 8  endstr = document.cookie.length; 
 9  return unescape(document.cookie.substring(offset, endstr));  网管网www_bitscn_com
10} 
11function GetCookie (name) { 
12  var arg = name + "="; 
13  var alen = arg.length; 
14  var clen = document.cookie.length; 
15  var i = 0; 
16  while (i < clen) { 
17    var j = i + alen; 
18    if (document.cookie.substring(i, j) == arg) 
19      return getCookieVal (j); 
20    i = document.cookie.indexOf(" ", i) + 1; 
21    if (i == 0) 
22       break; 
23  } 
24  return ""; 
25} 
26function SetCookie(cookieName,cookieValue,nDays) {  网管论坛bbs_bitsCN_com
27 var today = new Date(); 
28 var expire = new Date(); 
29 if (nDays==null || nDays==0) nDays=1; 
30 expire.setTime(today.getTime() + 3600000*24*nDays); 
31 document.cookie = cookieName+"="+escape(cookieValue) + ";path=/;domain=.163.com;expires="+expire.toGMTString(); 
32} 
33function getCityWeatherID(cityname){ 
34    for(i=0;i<city.length;i++){ 
35    if(city[i]==cityname){ 
36        return weaths[i]; 
37        } 
38    } 
39    return "54511"; 
40} 
41 
42var NTES_WeatherAddr = GetCookie("NTES_WeatherAddr"); 
43if (!NTES_WeatherAddr){ 
44    var loc = GetCookie("theaddr"); 
网管论坛bbs_bitsCN_com

45    if(!loc){ 
46        document.write("<script type='text/javascript' src='http://202.108.39.152/ipquery'><" + "/script>"); 
47    } 
48} 
49</script> 
50<script> 
51if (!NTES_WeatherAddr){ 
52    NTES_WeatherAddr=getCityWeatherID(loc); 
53} 
54window.location.href="http://news.163.com/weather/news/qx1/"+NTES_WeatherAddr+".html"; 
55</script> 
56 
57

中国网管论坛bbs.bitsCN.com

  上面的这段js实现了对来访者IP判断并给出了天气预报结果的链接。Js里的此链接: http://202.108.39.152/ipquery,起到的是判断用户所在地的作用,返回的是来访者所在地省份。分析到此,想要的结果差不多就出来了…

网管联盟bitsCN@com

  在客户端调用这段js获得天气预报结果的链接地址,然后交给服务端来处理。(为什么要交给后台处理,而不是直接显示呢?)因为直接得出的链接页面上,有多余的链接,还应用了样式(如图一),不便为自己所用,所以得处理掉。客户端调用服务端的方法很多,最初使用了Ajax框架Anthem,实现了过后,觉得有点杀鸡用牛刀的感觉。。无聊之余。。就又用CallBack实现了一次。。感觉恰到好处。。后来又发现。。__doPostBack也可以实现客户端调用服务端方法。。看来实现这么一个功能还真是简单。。。 网管u家u.bitscn@com

  好了到此就实现了,自己想要的结果:(感觉有点遗憾的是只给出了省会城市的天气预报) 网管联盟bitsCN@com

ASP.NET:根据IP获取当地天气预报的实现

网管u家u.bitscn@com

 

网管下载dl.bitscn.com

中国网管论坛bbs.bitsCN.com


上一页12 3 下一页
TAGs   当地   天气预报   获取   实现   根据   链接   页面   nDays   解析      
 上一篇:ASP.NET小技巧---使用样式   下一篇:ASP.NET 2.0的Web Part Framework
相关文章列表
用asp.net实现根据IP获取当地天气预报 评论:
loading.. 评论加载中…
评论:请自觉遵守互联网相关政策法规,评论不得超过250字。

验证码: 注册用户
本类热门排行:
1.ASP.NET中实时图表的实现
2.asp.net 实现购物车详细代码
3.asp.net 2.0实现语言和主题的切换
4.用asp.net实现根据IP获取当地天气预报
5.为ASP.NET封装的SQL数据库访问类
6.ASP.NET购物车代码程序
7.在asp.net中为Web用户控件添加属性
8.Web Service中保持ASP.net的状态
9.ASP.NET入门随想
10.面试ASP.NET程序员的笔试题和机试题
最新推荐文章:
1.ASP.NET定义主题和外观
2.如何让Visual Studio和web标准联姻
3.关于Asp.net中导出Excel表格的问题
4.如何封装JS和CSS文件为服务器端控件
5.ASP.NET页面打印技术的总结
6.如何处理ASP.NET 2.0配置文件
7.ASP.NET十分有用的页面间传值方法
8.ASP.NET中实现Flash与.NET的紧密集成
9.面试ASP.NET程序员的笔试题和机试题
10.ASP.NET中实时图表的实现
网管论坛交流:
·不疯魔不成活
·令你大开眼界的真正标准化机房,已整理重
·华为HCSE OSPF路由协议培训教材 V3.0
·为赈灾,女孩舍身拍“裸照”
·Windows Server 2003服务器群集创建和配
·exchange2k3全套官方资料
·双儿一周岁了。。。特殊的礼物来啦。。
·存储备份技术版块守则
·无盘技术交流区守则
·DOS命令基础大全之命令详解<作者吐血