ASP代码(ASP获取页面源码方法,有编码、超时时间参数,处理了乱码、超时的问题):

Function GetHttpPage(HttpUrl)
If IsNull(HttpUrl)=True Or Len(HttpUrl)< Then
GetHttpPage="$False$"
Exit Function
End If
Dim Http
'Set Http=server.createobject("MSXML2.XMLHTTP")
Set Http=server.createobject("MSxml2.ServerxmlHTTP")
Http.SetTimeOuts ,,,
Http.open "GET",HttpUrl,False
Http.Send()
If Http.Readystate<> then
Set Http=Nothing
GetHttpPage="False"
Exit function
End if
GetHTTPPage=BytesToBstr(Http.responseBody,"UTF-8")
Set Http=Nothing
If Err.number<> then
Err.Clear
End If
End Function Function BytesToBstr(Body,Cset)
Dim Objstream
Set Objstream = Server.CreateObject("adodb.stream")
objstream.Type =
objstream.Mode =
objstream.Open
objstream.Write body
objstream.Position =
objstream.Type =
objstream.Charset = Cset
BytesToBstr = objstream.ReadText
objstream.Close
set objstream = nothing
End Function

ASP方法使用(从m.weather.com.cn获取上海天气json数据):

<%
html=GetHttpPage("http://m.weather.com.cn/data/101020100.html")
'response.write(html)
%>

JS脚本将获取的数据追加到页面显示(用到了ASP和jQuery)

<script type="text/javascript">
var weather=eval(<%=html%>);
var htmlInfo="";
var dateVal="<%=year(now()) %>年<%=month(now()) %>月<%=day(now()) %>日"; if(weather!=undefined)
{
if(dateVal!=weather.weatherinfo.date_y)
{
htmlInfo="暂时无法获取最新上海天气数据&nbsp;";
}
else
{
htmlInfo=weather.weatherinfo.date_y+"&nbsp;"+
weather.weatherinfo.week+
"&nbsp;上海天气&nbsp;"+weather.weatherinfo.img_title1+
"&nbsp;气温"+weather.weatherinfo.temp1+"&nbsp;"+
weather.weatherinfo.wind1+"&nbsp;"+
"紫外线“"+weather.weatherinfo.index_uv+"”&nbsp;"+
weather.weatherinfo.index_d;
}
}
else
{
htmlInfo="暂时无法获取上海天气数据&nbsp;"
}
$("#weatherSpan").html(htmlInfo);
</script>

参考:

asp获取网页源码函数

中国国家气象局天气预报信息接口

之后做的调整:

1. GetHttpPage方法中SetTimeOuts 2000,2000,2000,2000是后来补充的,设置了超时时间。

同时原Set Http=server.createobject("MSXML2.XMLHTTP")也改成了Set Http=server.createobject("MSxml2.ServerxmlHTTP")。

参数说明参考:http://www.zzsky.cn/build/content/1427.htm

2. 原weather.weatherinfo!=undefined的判断也不对,已经更新成weather!=undefined。

3. 增加ASP缓存处理,缓存天气信息:

ASP缓存关键代码(使用的Application,所以是全局共享缓存——参考):

CONST_CACHE_DEFAULT_INTERVAL =  '每隔1小时刷新一次cache

Function IsExpires(cacheName)
Dim strLastUpdate
strLastUpdate= Application(cacheName & "_LastUpdate")
If ((strLastUpdate = "") Or (CONST_CACHE_DEFAULT_INTERVAL < DateDiff("s", strLastUpdate, Now))) Then
ClearCacheData cacheName
IsExpires=true
Else
IsExpires=false
End If
End Function Sub ClearCacheData(cacheName)
Application.Lock
Application(cacheName) = ""
Application(cacheName & "_LastUpdate") = ""
Application.UnLock
End Sub Sub SetCacheData(cacheName,content)
Application.Lock
Application(cacheName) = content
Application(cacheName & "_LastUpdate") = CStr(now())
Application.UnLock
End Sub Function GetCacheData(cacheName)
If (IsExpires(cacheName)) Then
ClearCacheData cacheName
End If
GetCacheData=Application(cacheName)
End Function

使用:

JS转json的方法:

<script language="JScript" runat="Server">
function toObject(json)
{
eval("var o=" + json);
return o;
}
</script>

vbscript代码(增加了是否是当天天气的判断,使用js的方法处理json):

htmlWeather=GetCacheData("htmlWeatherInfo")
if(htmlWeather="") then
htmlWeather=GetHttpPage("http://113.108.239.107/data/101020100.html")'http://m.weather.com.cn/data/101020100.html
SetCacheData "htmlWeatherInfo",htmlWeather
'response.Write Application("htmlWeatherInfo_LastUpdate")
else
objVal=toObject(htmlWeather)
if objVal<>"" and objVal.weatherinfo.date_y<>(year(now())&"年"&month(now())&"月"&day(now())&"日") then
htmlWeather=GetHttpPage("http://113.108.239.107/data/101020100.html")'http://m.weather.com.cn/data/101020100.html
SetCacheData "htmlWeatherInfo",htmlWeather
end if
'response.Write toObject(htmlWeather).weatherinfo.date_y
'response.Write Application("htmlWeatherInfo_LastUpdate")
end if

4.如果出现http://m.weather.com.cn/data/101020100.html在实际环境无法访问可尝试换成IP地址的URL:http://113.108.239.107/data/101020100.html

5.其他天气接口页面:

http://m.weather.com.cn/m/pn1/weather.htm?id=101200101T 这个链接有15种不同格式的,从pn1到pn15,ID是需要查询的那个城市的代码(城市代码参考:中国国家气象局天气预报信息接口

http://m.weather.com.cn/m/pn1/weather.htm 这个链接有15种不同格式的,从pn1到pn15

http://m.weather.com.cn/m/p1/weather1.htm  这个链接有13种不同格式的,从p1到p13

http://m.weather.com.cn/n/pn1/weather.htm 这个链接有14种不同格式的,从pn1到pn14

http://www.weather.com.cn/static/custom/custom.html 这个链接可以同时显示多个城市的天气

ASP获取json天气信息的更多相关文章

  1. Linux网络编程之"获取网络天气信息"

    需求分析: 1.需要Linux c 网络编程基础, 2.需要了解 http 协议 3.需要天气信息相关api(可以从阿里云上购买,很便宜的!) 4.需要cJSON解析库(因为获取到的天气信息一般是用c ...

  2. qt qml ajax 获取 json 天气数据示例

    依赖ajax.js类库,以下代码很简单的实现了获取天气json数据并展示的任务 [TestAjax.qml] import QtQuick 2.0 import "ajax.js" ...

  3. python 学习笔记 12 -- 写一个脚本获取城市天气信息

    近期在玩树莓派,前面写过一篇在树莓派上使用1602液晶显示屏,那么可以显示后最重要的就是显示什么的问题了. 最easy想到的就是显示时间啊,CPU利用率啊.IP地址之类的.那么我认为呢,假设可以显示当 ...

  4. ASP.NET 跨域获取JSON天气数据

    前几天做一个门户网站,在首页需要加载气象数据,采用了中央气象局的接口. 刚开始采用JSONP在前台跨域请求数据,没成功~ 后换成在c#后台请求数据返回... 前端代码: $(function () { ...

  5. 【一天一个小知识10/20】Unity通过www获取json文本信息。

    前提:领导要我在unity获取局域网服务器的文本信息.给了一个json的网络文本让我测试.我对于json以及服务器比较陌生.就直接去网上找相关的资料. 以下是自己测试的代码,没问题. 测试的网络jso ...

  6. jmeter通过json extrcator或者正则表达式获取json返回信息

    1.下载地址,及插件文档资料 https://jmeter-plugins.org/wiki/JSONPathExtractor/ json信息如下 { "error_code": ...

  7. 原生JS和jQuery分别使用jsonp来获取“当前天气信息”

    需掌握的技能点: jsonp.跨域相关等. 以下两种代码,均可直接运行. 1.使用原生JS: <!DOCTYPE html> <html lang="en"> ...

  8. 利用json获取天气信息

    天气预报信息获取是利用json获取的,网上有非常多资源,源码.因为上面涉及到非常多天气信息,包含湿度,出行建议等,以及加入了全部城市代码的资源包.为了练手了解json的原理.我仅获取诚笃城市的最高温, ...

  9. 使用小米天气API获取天气信息

    1. URL部分 以下url中"%s"代表的是城市Id,比如北京的cityId=101010100: //获取未来五天预报信息,红色部分信息不需要 WEATHER_DATA_URL ...

随机推荐

  1. bzoj2535 2109

    做过4010这题其实就水了 把图反向之后直接拓扑排序做即可,我们可以用链表来优化 每个航班的最小起飞序号就相当于在反向图中不用这个点最迟到哪 type node=record po,next:long ...

  2. bzoj2085

    首先看到k的范围就该知道这题不是倍增就是矩乘 首先肯定要求出任意一对串(a,b) a的后缀与b的前缀相同的最长长度是多少 考虑到kmp求出的失配指针是一个串最长后缀和前缀相等的长度 这里多个串我们只要 ...

  3. 从投影的角度理解pca:向量,投影,基,内积,坐标,维数,分散程度,方差,协方差矩阵,对角化,特征值分解,主成分分析PCA

    参考:http://blog.csdn.net/songzitea/article/details/18219237

  4. TCP协议的一些问题

    1 连接握手三次 解释1:已失效的连接请求报文段 情况下如下:client发出的第一个连接请求报文段并没有丢失,而是在某个网络结点长时间的滞留了,以致延误到连接释放以后的某个时间才到达server.本 ...

  5. make menuconfig 出错

    运行 #make menuconfig HOSTLD scripts/kconfig/mconf scripts/kconfig/mconf.o: In function `main': mconf. ...

  6. 在linux设置环境变量

    1.直接用export命令:#export PATH=$PATH:/opt/au1200_rm/build_tools/bin查看是否已经设好,可用命令export查看: [root@localhos ...

  7. JazzyViewPager开源项目的简析及使用

    JazzyViewPager是一个重写的ViewPager,能是ViewPager滑动起来更加的炫酷. 开源地址:https://github.com/jfeinstein10/JazzyViewPa ...

  8. 【转】APUE习题4.6---测试lseek作用

    原文网址:http://m.blog.csdn.net/blog/u014488381/42556509 原题:如果使用追加标志打开一个文件以便读.写,能否仍用 lseek 在任一为止开始读?能否用 ...

  9. git pull冲突解决

    场景:用户UserA修改了文件File1,用户UserB也修改了文件File1并成功merge到了服务器上,而UserA和UserB改动了同一个代码块,当UserA拉取代码时git无法merge此改动 ...

  10. JS:实用功能

    ylbtech-jQuery:函数-导航 添加样式(addClass).移除样式(removeClass) 轮替函数(toggle()) 选项拼加 全选 网页刷点器 jQuery:3.1,添加样式(a ...