湖南卫视闯关走光:VFP获得10天的天气预报
来源:百度文库 编辑:偶看新闻 时间:2024/04/28 22:53:10
VFP获得10天的天气预报
分类: VFP - 其他 2007-11-15 09:42 1540人阅读 评论(1) 收藏 举报 *--气象地址:http://xoap.weather.com (此地址当前信息1小时更新一次,10天信息2小时更新一次,感谢CSDN用户mmadd3提供此地址,并对数据进行分析)。*--在以上网页上方的Local weather后的文本框中输入要查询的城市(如:Beijing,China),出来页面后将鼠标移动到
*--Cities (1 of 1)
*--1. Beijing,China
*--中的Beijing,China上,即可得到北京的码:CHXX0008,哈尔滨的码:CHXX0046,用此方法可得到其他国家、地区
Local lcRemoteUrl,lcRemoteFile,lcLocalFile
If !File('天气预报.dbf')
Create Table 天气预报 (国家 C(20),地区 C(20),获取时间 C(5),更新时间1 T,日期 D,星期 C(6),经度 C(20),;
纬度 C(20),时区 C(5),当前温度 C(5),感觉温度 C(5),当前天气 C(50),当前气图号 C(5),年均降雨量 C(50),;
现在风速 C(5),现在风类 C(20),现在湿度 C(5),可见光强度 C(5),紫外线等级 C(5),紫外线强度 C(20),;
更新时间2 T,最高温 C(5),最低温 C(5),太阳升起时 C(5),太阳下落时 C(5),白天气图号 C(5),白天天气 C(50),;
白天风速 C(5),白天风类 C(20),白天降水率 C(5),白天湿度 C(5),夜晚气图号 C(5),夜晚天气 C(50),;
夜晚风速 C(5),夜晚风类 C(20),夜晚降水率 C(5),夜晚湿度 C(5))
Endif
lcRemoteUrl="http://xoap.weather.com/weather/local/CHXX0008?cc=*&dayf=10&par=0&prod=xoap&key=0&unit=m" &&CHXX0008表示:北京
lcRemoteFile=lcRemoteUrl
lcLocalFile = "c:/weather.txt"
Declare Integer DeleteUrlCacheEntry In Wininet.Dll String szUrl
Declare Integer URLDownloadToFile In urlmon.Dll Integer pCaller,String szURL,;
String szFileName,Integer dwReserved,Integer lpfnCB
=DeleteUrlCacheEntry(lcRemoteUrl) &&清理缓存
If URLDownloadToFile(0,lcRemoteFile,lcLocalFile,0,0)<>0
Messagebox('读取数据失败!',48,'信息提示')
Return
Endif
lcDateSet=Set("Date")
Set Date To Mdy
lnDowSet=Set("Fdow")
Set Fdow To
lnHours=Set("Hours")
Set Hours To 24
lcMark=Set("Mark")
Set Mark To
*只可惜VFP只识别VFP创建的XML,否则以下代码就可以不用这么麻烦了。
lcWeather=Filetostr("c:/weather.txt")
Delete File "c:/weather.txt"
lcDnam="<"+Strextract(lcWeather,"
lcCountry=Alltrim(Strextract(lcDnam,",",">")) &&取得国家,具体哪个城市取决于上面网址
lcCity=Alltrim(Strextract(lcDnam,"<",",")) &&取得地区,具体哪个地区取决于上面网址
lcReadTime=Left(Ttoc(Ctot(Dtoc(Date())+Space(1)+Strextract(lcWeather,"
ltUpdateTime1=Ctot(Strtran(Strextract(lcWeather,"
ltUpdateTime2=Ctot(Strtran(Strextract(lcWeather,"
ldDate=Ttod(ltUpdateTime2) &&取得第一天的日期
lcDow=Icase(Dow(ldDate)=1,'星期日',Dow(ldDate)=2,'星期一',Dow(ldDate)=3,'星期二',Dow(ldDate)=4,;
'星期三',Dow(ldDate)=5,'星期四',Dow(ldDate)=6,'星期五',Dow(ldDate)=7,'星期六') &&取得第一天的星期
lcLat=Strextract(lcWeather,"
lcLon=Strextract(lcWeather,"
lcZone=Strextract(lcWeather,"
lcTmp=Strextract(lcWeather,"
lcFlik=Strextract(lcWeather,"
lcTq=Strextract(lcWeather,"
lcIcon=Strextract(lcWeather,"
lcBar=Strtran(Strtran(Strextract(lcWeather,"
lcFs=Strextract(lcWeather,"
lcFl=Strextract(lcWeather,"
lcHmid=Strextract(lcWeather,"
lcVis=Strextract(lcWeather,"
lcZwxd=Strextract(lcWeather,"","",1) &&取得紫外线等级
lcZwxq=Strextract(lcWeather,"
If !Used('天气预报')
Use 天气预报
Endif
Select 天气预报
Locate For 日期=ldDate
If Found()
Update 天气预报 Set 国家=lcCountry,地区=lcCity,获取时间=lcReadTime,更新时间1=ltUpdateTime1,日期=ldDate,星期=lcDow,经度=lcLat,;
纬度=lcLon,时区=lcZone,当前温度=lcTmp,感觉温度=lcFlik,当前天气=lcTq,当前气图号=lcIcon,年均降雨量=lcBar,;
现在风速=lcFs,现在风类=lcFl,现在湿度=lcHmid,可见光强度=lcVis,紫外线等级=lcZwxd,紫外线强度=lcZwxq Where 日期=ldDate
Else
Insert Into 天气预报 (国家,地区,获取时间,更新时间1,日期,星期,经度,纬度,时区,当前温度,感觉温度,当前天气,当前气图号,年均降雨量,;
现在风速,现在风类,现在湿度,可见光强度,紫外线等级,紫外线强度) VALUES (lcCountry,lcCity,lcReadTime,ltUpdateTime1,ldDate,;
lcDow,lcLat,lcLon,lcZone,lcTmp,lcFlik,lcTq,lcIcon,lcBar,lcFs,lcFl,lcHmid,lcVis,lcZwxd,lcZwxq)
Endif
For I=1 To 10
lcHi=Strextract(lcWeather,"
","",I) &&取得最高温
lcLow=Strextract(lcWeather,"
lcSunr=Left(Ttoc(Ctot(Dtoc(Date())+Space(1)+Strextract(lcWeather,"
lcSuns=Left(Ttoc(Ctot(Dtoc(Date())+Space(1)+Strextract(lcWeather,"
lcPartD=Strextract(lcWeather,'
lcIconD=Strextract(lcPartD,"
lcTqD=Strextract(lcPartD,"
lcFsD=Strextract(lcPartD,"
lcFlD=Strextract(lcPartD,"
lcPpcpD=Strextract(lcPartD,"
lcHmidD=Strextract(lcPartD,"
lcPartN=Strextract(lcWeather,'
lcIconN=Strextract(lcPartN,"
lcTqN=Strextract(lcPartN,"
lcFsN=Strextract(lcPartN,"
lcFlN=Strextract(lcPartN,"
lcPpcpN=Strextract(lcPartN,"
lcHmidN=Strextract(lcPartN,"
ldDate2=ldDate+(I-1) &&日期
lcDow=Icase(Dow(ldDate2)=1,'星期日',Dow(ldDate2)=2,'星期一',Dow(ldDate2)=3,'星期二',Dow(ldDate2)=4,'星期三',;
Dow(ldDate2)=5,'星期四',Dow(ldDate2)=6,'星期五',Dow(ldDate2)=7,'星期六') &&取得星期
Select 天气预报
Locate For 日期=ldDate2
If Found()
Update 天气预报 Set 国家=lcCountry,地区=lcCity,获取时间=lcReadTime,日期=ldDate2,星期=lcDow,经度=lcLat,纬度=lcLon,;
时区=lcZone,更新时间2=ltUpdateTime2,最高温=lcHi,最低温=lcLow,太阳升起时=lcSunr,太阳下落时=lcSuns,白天气图号=lcIconD,;
白天天气=lcTqD,白天风速=lcFsD,白天风类=lcFlD,白天降水率=lcPpcpD,白天湿度=lcHmidD,夜晚气图号=lcIconN,;
夜晚天气=lcTqN,夜晚风速=lcFsN,夜晚风类=lcFlN,夜晚降水率=lcPpcpN,夜晚湿度=lcHmidN Where 日期=ldDate2
Else
Insert Into 天气预报 (国家,地区,获取时间,日期,星期,经度,纬度,时区,更新时间2,最高温,最低温,太阳升起时,太阳下落时,;
白天气图号,白天天气,白天风速,白天风类,白天降水率,白天湿度,夜晚气图号,夜晚天气,夜晚风速,夜晚风类,夜晚降水率,夜晚湿度) ;
VALUES (lcCountry,lcCity,lcReadTime,ldDate2,lcDow,lcLat,lcLon,lcZone,ltUpdateTime2,lcHi,lcLow,lcSunr,lcSuns,;
lcIconD,lcTqD,lcFsD,lcFlD,lcPpcpD,lcHmidD,lcIconN,lcTqN,lcFsN,lcFlN,lcPpcpN,lcHmidN)
Endif
Endfor
Clear Dlls
Set Date To (lcDateSet)
Set Fdow To (lnDowSet)
Set Hours To lnHours
Set Mark To lcMark
*USE IN '天气预报'
Browse &&看一下吧
哪里有未来10天的天气预报
1985.2.10那天的天气预报有谁知道怎么查?
VFP中文本框如何获得焦点?
14天前东莞的天气预报
在VFP中有API函数获得剪贴板的内容,和设置它的内容,求各位高手帮帮忙
我想通过发短信获得天气预报 发到哪里去
天气预报的背景音乐是什么?
天气预报的网站是什么?
天气预报网站的代码
天气预报的网站地址
天气预报的背景音乐是?
翡翠台 天气预报的背景音乐
国内城市的天气预报
cctv天气预报的背景音乐
牡丹江的天气预报
QQ天气预报的代码
天气预报的报道方式?
天气预报的电话号码多少?
宁波的明后天天气预报
广州的天气预报
广州的天气预报
天气预报的符号
求天气预报的代码
天气预报的音乐