当前访客身份:游客 [ 登录 | 加入 OSCHINA ]

代码分享

当前位置:
代码分享 » Python  » 网络编程
pengyouya123

获取yahoo天气

pengyouya123 发布于 2013年10月16日 19时, 5评/3726阅
分享到: 
收藏 +0
2
目前免费的天气API只有YAHOO的可用,中央气象台的已失效,获得的不是当前天气。
标签: <无>

代码片段(3) [全屏查看所有代码]

1. [代码]yahoo weather     跳至 [1] [2] [3] [全屏预览]

def get_weather() :
	#shanghai, 2151849
	url = 'http://weather.yahooapis.com/forecastrss?w=2151849&u=c'
	# namespace
	yweather = '{http://xml.weather.yahoo.com/ns/rss/1.0}'
	geo = '{http://www.w3.org/2003/01/geo/wgs84_pos#}'

	# get weather data
	data = urllib2.urlopen(url).read()
	#tree = ET.ElementTree(file='weather.xml')
	tree = ET.fromstring(data)

	root = tree
	#root = tree.getroot() #从文件读时启用此行代码
	#print root.tag, root.attrib
	content = 'City:shanghai\n'
	channel = root.find('channel')
	wind = channel.find(yweather+'wind')
	content += 'Chill:%s direction:%s speed:%skm/h\n' % (wind.attrib['chill'], wind.attrib['direction'], wind.attrib['speed'])
	atmosphere = channel.find(yweather+'atmosphere')
	content += 'Humidity:%s visibility:%s pressure:%smb rising:%s\n' % (atmosphere.attrib['humidity'], atmosphere.attrib['visibility'], atmosphere.attrib['pressure'], atmosphere.attrib['rising'])
	astronomy = channel.find(yweather+'astronomy')
	content += 'Sunrise:%s sunset:%s\n' % (astronomy.attrib['sunrise'], astronomy.attrib['sunset'])

	item = channel.find('item')
	pubdate = item.find('pubDate')
	content += 'Public on %s\n' % pubdate.text

	current = item.find(yweather + 'condition')
	content += 'Current: %s℃ %s\n' % (current.attrib['temp'], weather_table[int(current.attrib['code'])-1])

	#forecast
	for node in item.iter(yweather + 'forecast'):
		content += '%s %s-%s℃ %s\n' % (node.attrib['day'],
			node.attrib['low'],node.attrib['high'], weather_table[int(node.attrib['code'])-1])

	#print content
	return content

2. [代码]天气代码表     跳至 [1] [2] [3] [全屏预览]

weather_table = (
'龙卷风',
'热带风暴',
'暴风',
'大雷雨',
'雷阵雨',
'雨夹雪',
'雨夹雹',
'雪夹雹',
'冻雾雨',
'细雨',
'冻雨',
'阵雨',
'阵雨',
'阵雪',
'小阵雪',
'高吹雪',
'雪',
'冰雹',
'雨淞',
'粉尘',
'雾',
'薄雾',
'烟雾',
'大风',
'风',
'冷',
'阴',
'多云',
'多云',
'局部多云',
'局部多云',
'晴',
'晴',
'转晴',
'转晴',
'雨夹冰雹',
'热',
'局部雷雨',
'偶有雷雨',
'偶有雷雨',
'偶有阵雨',
'大雪',
'零星阵雪',
'大雪',
'局部多云',
'雷阵雨',
'阵雪',
'局部雷阵雨',
'水深火热',
)

3. [代码][Python]代码     跳至 [1] [2] [3] [全屏预览]

#现在调用我前面分享的代码,把天气信息发送到我的邮箱,或手机
# encoding = UTF-8

from myemail import sendmail
from weather import get_weather

if __name__ == '__main__':
	info =  get_weather()
	sendmail('orighost@qq.com', 'weather', info)
        # 换成139邮箱


开源中国-程序员在线工具:Git代码托管 API文档大全(120+) JS在线编辑演示 二维码 更多»

发表评论 回到顶部 网友评论(5)

  • 1楼:longtengxp 发表于 2013-10-18 07:21 回复此评论

     华为C8815手机套 C8815保护套 http://www.hwsjt.com/

  • 2楼:francis-x 发表于 2013-10-18 16:33 回复此评论

    引用来自“longtengxp”的评论

     华为C8815手机套 C8815保护套 http://www.hwsjt.com/

    @红薯 ,这家伙发的都是广告。
  • 3楼:zhangbo2012 发表于 2013-10-21 09:02 回复此评论
    http://weather.yahooapis.com/forecastrss?w=2151849&u=c
    这个地址我这里打不开,所以拿不到内容,不知道为什么 
  • 4楼:pengyouya123 发表于 2013-10-21 22:18 回复此评论
    不能吧,我刚才还打开了呢,你用的是平板吧,平板可能打不开
  • 5楼:cooklood 发表于 2014-01-22 10:30 回复此评论
    http://developer.yahoo.com/weather/  从这个进,第一次都加载不出来。后面的W和C参数先不加试试
开源从代码分享开始 分享代码
pengyouya123的其它代码 全部(6)...