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

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

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

以下是引用片段:

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));
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) {
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");
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

时间: 2024-11-08 19:21:11

asp.net实现根据IP获取当地天气预报的相关文章

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

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

ASP.NET实现根据IP获取省市地址的方法_实用技巧

本文实例讲述了ASP.NET实现根据IP获取省市地址的方法,分享给大家供大家参考.具体实现方法如下: 1.在网站的跟路径下面添加QQWry.dat(点击此处本站下载http://www.jb51.net/softs/10529.html)文件,这个文件是IP数据库文件 2.添加以下一个类 IPScanner 复制代码 代码如下: public class IPScanner {         //私有成员#region 私有成员         private string dataPath;

asp.net实现根据城市获取天气预报的方法_实用技巧

本文实例讲述了asp.net实现根据城市获取天气预报的方法.分享给大家供大家参考,具体如下: public void GetWetheaerByCity(string cityName) { string city = cityName; string mycity = HttpUtility.UrlEncode(city, System.Text.Encoding.GetEncoding("GB2312")); System.Net.HttpWebRequest request =

php利用新浪接口查询ip获取地理位置

 这篇文章主要介绍了php利用新浪接口查询ip获取地理位置示例,大家参考使用吧  代码如下: <?php  function getIPLoc_sina($queryIP){     $url = 'http://int.dpool.sina.com.cn/iplookup/iplookup.php?format=json&ip='.$queryIP;     $ch = curl_init($url);      curl_setopt($ch,CURLOPT_ENCODING ,'utf

Node.js和PHP根据ip获取地理位置的方法

这篇文章主要介绍了Node.js和PHP根据ip获取地理位置的方法,通过新浪接口根据IP地址获取所在城市,需要的朋友可以参考下 一.Node.js实现代码  代码如下: var http = require('http'); var util = require('util');   /**  * 根据 ip 获取获取地址信息  */ var getIpInfo = function(ip, cb) {     var sina_server = 'http://int.dpool.sina.c

wifi共享大师手机连接时一直处于ip获取状态怎么办?

  最近由用户向我们反应这样一个问题:wifi共享大师创建成功手机连接时一直处于ip获取中,出现这种问题该怎么办呢,wifi共享大师教你如何解决wifi共享大师创建成功手机连接时一直处于ip获取中怎么办这个问题. wifi共享大师创建成功,但手机连接时一直处于ip获取状态怎么办? 1,断开连接wifi热点, 在电脑的右下角右击wifi共享大师托盘,选择关闭热点并退出. 2.检测pc端防火墙是否关闭,如果没有关闭,将其关闭. ①windows防火墙关闭方法: 在电脑右下角右击小电脑图标,选择打开网

wcf-WCF获取客户端IP 获取的不正确

问题描述 WCF获取客户端IP 获取的不正确 我在网上按照这段代码,不知道为什么获取的不正确 OperationContext context = OperationContext.Current; //获取传进的消息属性 MessageProperties properties = context.IncomingMessageProperties; //获取消息发送的远程终结点IP和端口 RemoteEndpointMessageProperty endpoint = properties[

通过IP获取客户端文本信息

问题描述 小弟请教一下是否可以根据客户端IP获取到客户端的文本信息呢如果可以还请赐教!! 解决方案 解决方案二:不可以,除非对方开启了可以传输本地文本的服务,比如ftp之类的.

如何通过 IP 获取域名

问题描述 想通过IP获取域名 解决方案 解决方案二:大哥...你要做dns呀!解决方案三:浏览器没有这个功能只是浏览器通过IP直接访问web服务器,可以得到结果的.和用域名访问一样的结果,省了通过DNS做域名解析的过程.IP--〉域名是反向解析,需要特定的DNS支持的.后台创建一个WebBrowser对象,把IP赋给对象,让对象去连接网站,然后获取地址栏的字符串(网址).(C#)解决方案四:说民白点解决方案五:该回复于2011-03-09 16:28:07被版主删除解决方案六:浏览器通过IP直接