天气预报数据源
天气预报数据源测试
http://m.weather.com.cn/data/101280601.html 深圳
http://m.weather.com.cn/data/101240601.html 吉安
天气预报数据源获取
http://m.weather.com.cn/data/101240601.html
这里,101240601即为城市id
id怎么获取?
通过 http://61.4.185.48:81/g/ 推荐这个接口
返回: var ip="113.90.74.76";var id=101280601;if(typeof(id_callback)!="undefined"){id_callback();}
或
通过 http://fw.qq.com/ipaddress
返回: var IPData = new Array("113.90.74.76","","广东省","深圳市");
php方式抓取到本地
<?php
header("content-type: text/html");
$url = 'http://m.weather.com.cn/data/';
$id = $_GET['id'];
$data = file_get_contents($url . $id .'.html');
echo $data;
?>
header("content-type: text/html");
$url = 'http://m.weather.com.cn/data/';
$id = $_GET['id'];
$data = file_get_contents($url . $id .'.html');
echo $data;
?>
asp方式抓取到本地
<%
on error resume next
response.charset = 'utf-8';
server.scripttimeout = 9999999
//入口函数
function gethttppage(path)
t = getbody(path)
gethttppage = bytestobstr(t,"gb2312")
end function
'首先,进行小偷程式的一些初始化设置,以上代码的作用分别是忽略掉所有非致命性错误,把小偷程式的运行超时时间设置得非常长(这样不会出现运行超时的错误),转换原来默认的utf-8编码转换成gb2312编码,否则直接用xmlhttp组件调用有中文字符的网页得到的将是乱码。
function getbody(url)
on error resume next
set retrieval = createobject("microsoft.xmlhttp")
with retrieval
.open "get", url, false, "", ""
.send
getbody = .responsebody
end with
set retrieval = nothing
end function
'然后调用xmlhttp组件创建一个对象并进行初始化设置。
function bytestobstr(body,cset)
dim objstream
set objstream = server.createobject("adodb.stream")
objstream.type = 1
objstream.mode =3
objstream.open
objstream.write body
objstream.position = 0
objstream.type = 2
objstream.charset = cset
bytestobstr = objstream.readtext
objstream.close
set objstream = nothing
end function
//获取匹配的字符
function newstring(wstr,strng)
newstring=instr(lcase(wstr),lcase(strng))
if newstring<=0 then newstring=len(wstr)
end function
%>
<%
'处理抓取回来的数据需要调用adodb.stream组件并进行初始化设置。以下即为页面显示部分
dim wstr, url, start, over, city, body
'定义一些需要使用到的变量
city = request.querystring("id")
'程序传回的id变量(即用户选择的城市)赋给id
url="http://m.weather.com.cn/data/"& cityId &".html";
'这里设置需要抓取的页面地址,获取指定页面的全部数据
wstr=gethttppage(url)
response.Write(wstr)
%>
on error resume next
response.charset = 'utf-8';
server.scripttimeout = 9999999
//入口函数
function gethttppage(path)
t = getbody(path)
gethttppage = bytestobstr(t,"gb2312")
end function
'首先,进行小偷程式的一些初始化设置,以上代码的作用分别是忽略掉所有非致命性错误,把小偷程式的运行超时时间设置得非常长(这样不会出现运行超时的错误),转换原来默认的utf-8编码转换成gb2312编码,否则直接用xmlhttp组件调用有中文字符的网页得到的将是乱码。
function getbody(url)
on error resume next
set retrieval = createobject("microsoft.xmlhttp")
with retrieval
.open "get", url, false, "", ""
.send
getbody = .responsebody
end with
set retrieval = nothing
end function
'然后调用xmlhttp组件创建一个对象并进行初始化设置。
function bytestobstr(body,cset)
dim objstream
set objstream = server.createobject("adodb.stream")
objstream.type = 1
objstream.mode =3
objstream.open
objstream.write body
objstream.position = 0
objstream.type = 2
objstream.charset = cset
bytestobstr = objstream.readtext
objstream.close
set objstream = nothing
end function
//获取匹配的字符
function newstring(wstr,strng)
newstring=instr(lcase(wstr),lcase(strng))
if newstring<=0 then newstring=len(wstr)
end function
%>
<%
'处理抓取回来的数据需要调用adodb.stream组件并进行初始化设置。以下即为页面显示部分
dim wstr, url, start, over, city, body
'定义一些需要使用到的变量
city = request.querystring("id")
'程序传回的id变量(即用户选择的城市)赋给id
url="http://m.weather.com.cn/data/"& cityId &".html";
'这里设置需要抓取的页面地址,获取指定页面的全部数据
wstr=gethttppage(url)
response.Write(wstr)
%>
JS加载数据源
<script type="text/javascript">
//动态加载js
function loadJs(jsUrl, fCallBack) {
var _script = document.createElement('script');
_script.setAttribute('type', 'text/javascript');
_script.setAttribute('src', jsUrl);
document.getElementByTagName('head')[0].appendChild(_script);
if (typeof fCallBack != 'undefined') {
//if ($.browser.msie) //借助jQuery判断ie
if ($.browser.msie && ($.browser.version == "6.0") && !$.support.style) {
_script.onreadystatechange = function() {
if (this.readyState == 'loaded' || this.readyState == 'complete') {
fCallBack();
}
};
} else {
_script.onload = function() {
fCallBack();
};
}
}
}
var cityIdUrl = 'http://61.4.185.48:81/g/';
var weatherUrl = 'getWeather.asp?id='; //因为js的跨域问题,所以通过其他方式拿
/*
loadJs(cityIdUrl, function() {
if (typeof id != 'undefined') {
var curDayWeather; //先出缓存中获取
$.getJSON(weatherUrl + id, function(data) {
var w_info = data.weatherinfo;
curDayWeather = w_info.weather1;
//下面可以尽情地解析获取到的天气数据
});
}
});*/ //为了方便我把它封成回调形式
//演变后:
function getWeather = function(f_cb) {
loadJs(cityIdUrl, function() {
if (typeof id != 'undefined') {
var curDayWeather; //可以在此添加缓存机制
//根据不同城市的id获取它的天气预报
$.getJSON(weatherUrl + id, function(data) {
var w_info = data.weatherinfo;
curDayWeather = w_info.weather1; //json对象
//下面可以尽情地解析获取到的天气数据,如果要获取近几天和未来的数据可以在此进行扩展
f_cb(curDayWeather);
});
}
});
}
//调用之
getWeather(function(weather_data) {
//这里把拿到的weather_data放到你想要的位置。
});
</script>
//动态加载js
function loadJs(jsUrl, fCallBack) {
var _script = document.createElement('script');
_script.setAttribute('type', 'text/javascript');
_script.setAttribute('src', jsUrl);
document.getElementByTagName('head')[0].appendChild(_script);
if (typeof fCallBack != 'undefined') {
//if ($.browser.msie) //借助jQuery判断ie
if ($.browser.msie && ($.browser.version == "6.0") && !$.support.style) {
_script.onreadystatechange = function() {
if (this.readyState == 'loaded' || this.readyState == 'complete') {
fCallBack();
}
};
} else {
_script.onload = function() {
fCallBack();
};
}
}
}
var cityIdUrl = 'http://61.4.185.48:81/g/';
var weatherUrl = 'getWeather.asp?id='; //因为js的跨域问题,所以通过其他方式拿
/*
loadJs(cityIdUrl, function() {
if (typeof id != 'undefined') {
var curDayWeather; //先出缓存中获取
$.getJSON(weatherUrl + id, function(data) {
var w_info = data.weatherinfo;
curDayWeather = w_info.weather1;
//下面可以尽情地解析获取到的天气数据
});
}
});*/ //为了方便我把它封成回调形式
//演变后:
function getWeather = function(f_cb) {
loadJs(cityIdUrl, function() {
if (typeof id != 'undefined') {
var curDayWeather; //可以在此添加缓存机制
//根据不同城市的id获取它的天气预报
$.getJSON(weatherUrl + id, function(data) {
var w_info = data.weatherinfo;
curDayWeather = w_info.weather1; //json对象
//下面可以尽情地解析获取到的天气数据,如果要获取近几天和未来的数据可以在此进行扩展
f_cb(curDayWeather);
});
}
});
}
//调用之
getWeather(function(weather_data) {
//这里把拿到的weather_data放到你想要的位置。
});
</script>