基于python的天气预报系统,基于python编写的天气抓取程序
以前一直使用中國(guó)天氣網(wǎng)的天氣預(yù)報(bào)組件都挺好,可是自從他們升級(jí)組件后數(shù)據(jù)加載變得非常不穩(wěn)定,因?yàn)镴S的阻塞常常導(dǎo)致網(wǎng)站打開速度很慢。為了解決這個(gè)問題決定現(xiàn)學(xué)現(xiàn)用python編寫一個(gè)抓取程序,每天定時(shí)抓取最新的天氣情況并生成靜態(tài)JS供網(wǎng)站調(diào)用。由于初學(xué)python,程序有些地方寫得不是很優(yōu)雅,還望高手指正。
代碼如下:
#!/usr/bin/env python
#coding:UTF-8
import urllib,os,datetime
def GetWeather(cityid):
"獲取指定城市的天氣情況"
#http://www.weather.com.cn/data/cityinfo/101110301.html
#{"weatherinfo":{"city":"延 長(zhǎng)","cityid":"101110301","temp1":"31℃","temp2":"18℃","weather":"多 云","img1":"d1.gif","img2":"n1.gif","ptime":"08:00"}}
url="http://www.weather.com.cn/data/cityinfo/"+cityid+".html"
Result=""
try:
web=urllib.urlopen(url)
content=web.read().decode('utf-8').replace('"',"")
except Exception,e:
Result="error"
if content.find("{weatherinfo") >=0:
Items=content.replace("{weatherinfo:{","").replace("}}","").split(",")
if len(Items)>=8:
Result=""+Items[0].split(":")[1]+"?"+Items[4].split(":")[1]+"?"+Items[2].split(":")[1]+"?/?"+Items[3].split(":")[1]+"
"+"?
"
return Result
def CreateJS(FileName,Content):
if len(Content)>10:
now=datetime.datetime.now()
try:
fp=open(FileName,'w')
fp.write('document.write("'+Content.encode("utf-8")+'");\n')
fp.write('//'+now.strftime('%Y-%m-%d %H:%M:%S')+'\n')
fp.close()
except IOError:
print "ioerror"
if __name__ == "__main__":
Wcont=GetWeather("101110301")
#print Wcont
CreateJS("/weather.js",Wcont)
注:
1、城市代碼可以到中國(guó)天氣網(wǎng)上去查。
2、天氣圖標(biāo)也可以在中國(guó)天氣網(wǎng)的圖標(biāo)示例里去獲取,這里就不提供了。
3、有同學(xué)表示,天氣網(wǎng)的插件不是支持延后加載嗎?嗯,是這樣的。經(jīng)本人實(shí)測(cè)在有些手機(jī)瀏覽器上會(huì)導(dǎo)致整個(gè)頁面變空白,問題已提交給官方。
總結(jié)
以上是生活随笔為你收集整理的基于python的天气预报系统,基于python编写的天气抓取程序的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python的clock函数,Pytho
- 下一篇: ftok file php,Linux和