- 浏览: 7039938 次
- 性别:
- 来自: 上海
最新评论
-
autosuggestion:
实现一个智能提示功能需要JavaScript、ajax、数据库 ...
自动提示结果 -
岁月之眸:
...
Java读TXT文件 -
yujian58:
写的好。
在线客服技术方案 -
QQ1067184821:
你好,能不能发个完整的给我呢?1067184821@qq.co ...
Extjs3.2+Json lib动态树与GridPanel简单展现 -
chenhua0725:
能不能发一个完成的包给我呢,谢谢了,83667664@qq.c ...
Extjs3.2+Json lib动态树与GridPanel简单展现
访问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
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 ");
47 }
48}
49
50
51if (!NTES_WeatherAddr){
52 NTES_WeatherAddr=getCityWeatherID(loc);
53}
54window.location.href="http://news.163.com/weather/news/qx1/"+NTES_WeatherAddr+".html";
55
56
57
上面的这段js实现了对来访者IP判断并给出了天气预报结果的链接。Js里的此链接: http://202.108.39.152/ipquery,起到的是判断用户所在地的作用,返回的是来访者所在地省份。分析到此,想要的结果差不多就出来了…
在客户端调用这段js获得天气预报结果的链接地址,然后交给服务端来处理。(为什么要交给后台处理,而不是直接显示呢?)因为直接得出的链接页面上,有多余的链接,还应用了样式(如图一),不便为自己所用,所以得处理掉。客户端调用服务端的方法很多,最初使用了Ajax框架Anthem,实现了过后,觉得有点杀鸡用牛刀的感觉。。无聊之余。。就又用CallBack实现了一次。。感觉恰到好处。。后来又发现。。__doPostBack也可以实现客户端调用服务端方法。。看来实现这么一个功能还真是简单。。。
好了到此就实现了,自己想要的结果:(感觉有点遗憾的是只给出了省会城市的天气预报)
前台页面代码Defaul.aspx:
以下是引用片段:
1
2
3
4
5
6
7var city = new Array("安徽","黑龙江","山东","北京","湖北","山西","福建","湖南","陕西","甘肃","吉林","上海","广东","江苏","四川","广西","江西","天津","贵州","辽宁","西藏","海南","内蒙古","新疆","河北","宁夏","云南","河南","青海","浙江","重庆");
8var 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');
9
10var NTES_WeatherAddr = GetCookie("NTES_WeatherAddr");
11if (!NTES_WeatherAddr){
12 var loc = GetCookie("theaddr");
13 if(!loc){
14 document.write("");
15 }
16}
17
18function getCookieVal (offset) {
19 var endstr = document.cookie.indexOf (";", offset);
20 if (endstr == -1)
21 endstr = document.cookie.length;
22 return unescape(document.cookie.substring(offset, endstr));
23}
24
25function GetCookie (name) {
26 var arg = name + "=";
27 var alen = arg.length;
28 var clen = document.cookie.length;
29 var i = 0;
30 while (i ;
91}
92function outPutResult(result)
93{
94 document.getElementById("result").innerHTML = result;
95
96}
97
98
99
100
101
102
103
104
105
106
后台代码Default.cs:
以下是引用片段:
1using System;
2using System.Data;
3using System.Configuration;
4using System.Web;
5using System.Web.Security;
6using System.Web.UI;
7using System.Web.UI.WebControls;
8using System.IO;
9using System.Net;
10using Anthem;
11
12public partial class _Default : System.Web.UI.Page, ICallbackEventHandler
13{
14 protected void Page_Load(object sender, EventArgs e)
15 {
16 Anthem.Manager.Register(this);
17
18 }
19
20 回调的固定格式#region 回调的固定格式
21 public string str_content;
22
23 public void RaiseCallbackEvent(string the_string)
24 {
25 str_content = the_string;
26 }
27
28 /**////
29 /// 回调,解析客户端的参数
30 ///
31 ///
32 public string GetCallbackResult()
33 {
34
35 string[] parts = str_content.Split('|');
36 object[] theArgList = new object[parts.Length - 1];
37 for (int int_index = 1; int_index
45 /// Anthem方式,解析获取的url的页面内容
46 ///
47 /// url
48 /// 解析结果
49 [Anthem.Method]
50 public string ShowWeatherByAnthem()
51 {
52
53 WebRequest request = WebRequest.Create(Text1.Value);
54 request.Credentials = CredentialCache.DefaultCredentials;
55 HttpWebResponse response = (HttpWebResponse)request.GetResponse();
56 Stream dataStream = response.GetResponseStream();
57 StreamReader reader = new StreamReader(dataStream, System.Text.Encoding.Default);
58 string str = reader.ReadToEnd();
59 return str.Substring(220);
60
61 }
62 //
63 //回调方式,解析获取的url的页面内容
64 //
65 //
66 //
67 public string ShowWeatherByCall(string url)
68 {
69 WebRequest request = WebRequest.Create(url);
70 request.Credentials = CredentialCache.DefaultCredentials;
71 HttpWebResponse response = (HttpWebResponse)request.GetResponse();
72 Stream dataStream = response.GetResponseStream();
73 StreamReader reader = new StreamReader(dataStream, System.Text.Encoding.Default);
74 string str = reader.ReadToEnd();
75 return str.Substring(220);
76
77 }
78 #endregion
79}
80
发表评论
-
jQuery+Ajax+PHP+Mysql实现分页显示数据
2013-09-09 15:54 2859jQuery+Ajax+PHP+Mysql实现分页显示数 ... -
Tab页界面,用jQuery及Ajax技术实现
2009-09-19 18:06 1794从桌面开发的时代开始,Tab页就是一个优异的界面布局形式,兼有 ... -
自动提示结果
2008-12-05 14:39 1141自动提示结果,仿google搜索框提示 http://ww ... -
visibility和display区别
2008-12-05 19:55 905它们都可以实现对域的隐藏,但visibility要占用域的空间 ... -
可放在网页旁边的导航菜单,点击向右边展开
2008-12-05 20:04 1255<iframe name="google_ad ... -
图片加载loading...
2008-12-06 10:39 1179<iframe name="google_ad ... -
iframe加载loading...
2008-12-06 10:40 1176<body> <div id="l ... -
发一个选项卡动态增删的效果..
2008-12-06 13:16 1072发一个选项卡动态增删的效果.. 仿126的效果,可以删除的ta ... -
复选框问题,将选定的值在textarea显示
2008-12-07 02:12 1148<iframe name="google_ ... -
表格复选和复选变色效果
2008-12-07 02:13 733<style type="text/c ... -
表格数据排序
2008-12-07 02:14 988<STYLE type=text/css>TA ... -
检测密码强度
2008-12-07 02:15 915<!DOCTYPE html PUBLIC &quo ... -
CNL Tree Menu Ver1.02无限级树形菜by CNLei枫岩
2008-12-07 02:15 1183<!DOCTYPE html PUBLIC &quo ... -
点击按钮,实现复制网址的代码
2008-12-07 02:19 1905<iframe name="google_ ... -
完全去除页面滚动条的方法
2008-12-07 02:21 1708今天做站的时候客户要求实现网站全屏,使用JavaScript: ... -
支持IE和火狐浏览器的加入收藏夹js代码
2008-12-07 20:01 2940支持IE和火狐浏览器的加入收藏夹js代码 如果想要在opera ... -
javascript实现换皮肤的一种思路
2008-12-07 20:11 895难点在于document.write输出html语句结构用法。 ... -
yiu简易网页调色板功能调用代码
2008-12-08 10:13 979简易网页调色板功能调用代码 colorSelect('色值 ... -
table排序类,点击第一行标题可以排序
2008-12-08 10:20 1457table排序类,点击第一行标题可以排序 <!DO ... -
表格隔行换色+鼠标经过变色(ie6,ie7,ff)
2008-12-08 10:21 1131<!DOCTYPE html PUBLIC " ...
相关推荐
页面第一次载入时会根据IP自动获取当地天气今天的预报,也可以手动选择获取明天或后天的天气。 全国各省市数据表里读取数据加载到下拉列表中,通过选择省和市,以AJAX异步传输方式获取天气信息,还可 以选择获取...
在项目文件"js_css根据ip获得当地天气预报"中,应该包含了JavaScript文件(可能命名为`weather.js`或类似),用于处理上述逻辑;CSS文件(如`style.css`)用于样式设计;以及HTML文件(如`index.html`),将两者结合...
这个系统具有根据用户IP地址自动获取并显示其所在地区天气预报的功能。以下是对其中涉及的技术点进行的详细说明: 1. ASP(Active Server Pages): ASP是微软开发的一种服务器端脚本环境,用于生成动态网页。在这...
标题中的“通过IP查询所在地天气预报”涉及到的技术主要包括网络编程、IP定位以及API接口的使用。这个项目的核心是获取用户的IP地址,然后根据IP地址来查找对应的地理位置,并进一步获取该地区的天气信息。以下是对...
利用C#制作的天气预报助手 采用vs2008开发,因为是天气预报,所以需要网络...程序启动后会获取本机IP,根据IP显示当地的天气预报,类似QQ的天气预报显示功能,不过信息更加丰富 也可以手动选择省、市、区查看天气预报。
在本项目中,"ASP根据IP显示当地天气"是一个功能,它利用用户的IP地址来确定用户所在的城市,进而获取并展示该城市的天气预报,特别是未来三天的天气情况。 实现这个功能通常涉及到以下几个步骤: 1. **获取IP地址...
在本文中,我们将探讨如何在Vue.js项目中实现根据用户IP地址获取当前位置的天气信息。首先,我们需要获取用户的IP地址并将其转换为所在城市,然后利用该城市信息调用天气API以获取实时天气数据。 1. 定位IP地址所在...
在查询天气预报时,程序可能需要获取用户的外网IP来确定其大致位置,从而找到相应的天气数据。这通常通过HTTP请求实现,例如调用第三方API,如OpenWeatherMap、AccuWeather等,这些API会根据提供的IP地址返回相应的...
这是一个关于使用JavaScript实现的动态天气预报代码示例,主要目标是模拟腾讯网站上根据用户IP自动显示当地天气的功能。在互联网应用中,这样的功能能够提供用户便利,无需手动输入地理位置,即可快速查看本地天气...
本文将详细解析一个基于C# WinForm技术实现的天气预报程序,该程序能根据用户的IP地址获取当地的天气信息,并且具备开机自动运行的功能。这将涉及到网络请求、数据解析、Windows服务等多个方面的知识。 首先,我们...
标题中的“jQuery天气插件自动定位当地天气预报代码特效源码”揭示了这是一个基于JavaScript库jQuery的天气插件,它的核心功能是能够自动检测用户所在地的地理位置,并显示相应的天气预报信息。这个插件通过集成API...
7. **地理定位**:可能需要获取用户的地理位置来查询当地的天气,可以使用Geolocation API或者IP地址定位服务。 8. **更新机制**:为了保持天气信息的最新,可以设定定时器定期更新数据。 9. **许可证和合规性**:...
全国各省市数据表里读取数据加载到...2.由访问者IP确定其地理位置,再找到他所在的城市,从而显示当地天气信息。 文件中的weather_Data_MDF.rar是数据文件,直接附加就行了。附加后修改conn.asp中的链接串即可使用。
### 知识点一:265天气预报插件 #### 插件介绍 265天气预报插件是一款能够根据用户的...无论是自动检测IP获取当地天气,还是允许用户自定义显示的城市,这些插件都能够有效地增强网站的用户体验,提供实用的信息服务。
描述中提到的“利用WEB Service的城市天气预报小系统”,表明该软件的核心功能是基于Web服务技术来实现的。Web服务是一种基于互联网的,允许不同应用之间交互数据的技术。在这里,它被用来从特定的天气预报API(应用...
综上所述,"asp.net通用天气预报插件"是ASP.NET开发者的一个强大工具,能够简化天气预报功能的实现,提高开发效率,并且增强网站的用户体验。开发者在使用时,可以根据项目需求进行定制,以满足特定的业务场景。
基于VS2008 + .Net3.5开发的天气预报,需要网络支持。 这里只放开原型。 程序启动时会自动联网获取公网IP,然后根据IP自动查看当地天气。 也可以手动选择省、市、区查看天气预报。
页面第一次载入时会根据IP自动获取当地天气今天的预报,也可以手动选择获取明天或后天的天气。 全国各省市数据表里读取数据加载到下拉列表中,通过选择省和市,以AJAX异步传输方式获取天气信息,还可 以选择获取...
页面第一次载入时会根据IP自动获取当地天气今天的预报,也可以手动选择获取明天或后天的天气。 全国各省市数据表里读取数据加载到下拉列表中,通过选择省和市,以AJAX异步传输方式获取天气信息,还可 以选择获取...
用户可能需要配置小工具,输入他们的地理位置,或者它可能自动检测用户的IP地址来获取当地天气。 在使用这个天气预报.gadget之前,用户需要解压文件,并按照Windows 7的指导将gadget添加到桌面。通常,这可以通过...