Python之查询天气小程序

        使用python可以做一些有点意思的事情,比如查询天气。你输入一个城市的名称,就会告诉你这个城市现在的天气情况。

接下来详细介绍查询天气的步骤!

step 1:试着访问地址http://www.weather.com.cn/data/cityinfo/101010100.html,你发现可以找到北京的天气。这玩意就是像python的字典的玩意,是一种被称为json格式的数据。在这个小程序中,我们需要用到两个模块:urllib2(用来发送网络请求,获取数据)和json(用来解析获取的数据)。逻辑上也解释得通,先去获取数据,接下来处理数据。在最初你看到的地址里面有101010100,这个地址是怎么来的呢?是靠抓取了天气网的三个接口得到了省/直辖市编号,二级地区编号,三级地区编号,最后在前面加一个中国的编号101就得到了以上编号。

step 2:urllib2是获取网络上的资源的模块。urllib2会根据你提供的网址,请求对应的内容。

                比如抓取百度的首页:

               

import urllib2
web = urllib2.urlopen('http://www.baidu.com')
content = web.read()
print content

               以上使用了urlopen打开了百度,然后用read的方法读数据到变量content,并输出。

               我们要向中国天气网发一个查询天气的请求。昨天说了,如何获取查询的url是个问题。先说简单的办法,用提供的城市代码列表city.py。         

               city.py这个文件里有一个叫做city的字典,它里面的key是城市的名称,value是对应的城市代码。不用把它copy到自己的程序中,只要放在和你的代码同一路径下,用

               import city。接着附带上字典:

# -*- coding: cp936 -*-
citycode = {
    '北京': '101010100',
    '海淀': '101010200',
    '朝阳': '101010300',
    '顺义': '101010400',
    '怀柔': '101010500',
    '通州': '101010600',
    '昌平': '101010700',
    '延庆': '101010800',
    '丰台': '101010900',
    '石景山': '101011000',
    '大兴': '101011100',
    '房山': '101011200',
    '密云': '101011300',
    '门头沟': '101011400',
    '平谷': '101011500',
    '八达岭': '101011600',
    '佛爷顶': '101011700',
    '汤河口': '101011800',
    '密云上甸子': '101011900',
    '斋堂': '101012000',
    '霞云岭': '101012100',
    '上海': '101020100',
    '闵行': '101020200',
    '宝山': '101020300',
    '嘉定': '101020500',
    '南汇': '101020600',
    '金山': '101020700',
    '青浦': '101020800',
    '松江': '101020900',
    '奉贤': '101021000',
    '崇明': '101021100',
    '徐家汇': '101021200',
    '浦东': '101021300',
    '天津': '101030100',
    '武清': '101030200',
    '宝坻': '101030300',
    '东丽': '101030400',
    '西青': '101030500',
    '北辰': '101030600',
    '宁河': '101030700',
    '汉沽': '101030800',
    '静海': '101030900',
    '津南': '101031000',
    '塘沽': '101031100',
    '大港': '101031200',
    '蓟县': '101031400',
    '重庆': '101040100',
    '永川': '101040200',
    '合川': '101040300',
    '南川': '101040400',
    '江津': '101040500',
    '万盛': '101040600',
    '渝北': '101040700',
    '北碚': '101040800',
    '巴南': '101040900',
    '长寿': '101041000',
    '黔江': '101041100',
    '万州龙宝': '101041300',
    '涪陵': '101041400',
    '开县': '101041500',
    '城口': '101041600',
    '云阳': '101041700',
    '巫溪': '101041800',
    '奉节': '101041900',
    '巫山': '101042000',
    '潼南': '101042100',
    '垫江': '101042200',
    '梁平': '101042300',
    '忠县': '101042400',
    '石柱': '101042500',
    '大足': '101042600',
    '荣昌': '101042700',
    '铜梁': '101042800',
    '璧山': '101042900',
    '丰都': '101043000',
    '武隆': '101043100',
    '彭水': '101043200',
    '綦江': '101043300',
    '酉阳': '101043400',
    '秀山': '101043600',
    '沙坪坝': '101043700',
    '哈尔滨': '101050101',
    '双城': '101050102',
    '呼兰': '101050103',
    '阿城': '101050104',
    '宾县': '101050105',
    '依兰': '101050106',
    '巴彦': '101050107',
    '通河': '101050108',
    '方正': '101050109',
    '延寿': '101050110',
    '尚志': '101050111',
    '五常': '101050112',
    '木兰': '101050113',
    '齐齐哈尔': '101050201',
    '讷河': '101050202',
    '龙江': '101050203',
    '甘南': '101050204',
    '富裕': '101050205',
    '依安': '101050206',
    '拜泉': '101050207',
    '克山': '101050208',
    '克东': '101050209',
    '泰来': '101050210',
    '牡丹江': '101050301',
    '海林': '101050302',
    '穆棱': '101050303',
    '林口': '101050304',
    '绥芬河': '101050305',
    '宁安': '101050306',
    '东宁': '101050307',
    '佳木斯': '101050401',
    '汤原': '101050402',
    '抚远': '101050403',
    '桦川': '101050404',
    '桦南': '101050405',
    '同江': '101050406',
    '富锦': '101050407',
    '绥化': '101050501',
    '肇东': '101050502',
    '安达': '101050503',
    '海伦': '101050504',
    '明水': '101050505',
    '望奎': '101050506',
    '兰西': '101050507',
    '青冈': '101050508',
    '庆安': '101050509',
    '绥棱': '101050510',
    '黑河': '101050601',
    '嫩江': '101050602',
    '孙吴': '101050603',
    '逊克': '101050604',
    '五大连池': '101050605',
    '北安': '101050606',
    '大兴安岭': '101050701',
    '塔河': '101050702',
    '漠河': '101050703',
    '呼玛': '101050704',
    '呼中': '101050705',
    '新林': '101050706',
    '加格达奇': '101050708',
    '伊春': '101050801',
    '乌伊岭': '101050802',
    '五营': '101050803',
    '铁力': '101050804',
    '嘉荫': '101050805',
    '大庆': '101050901',
    '林甸': '101050902',
    '肇州': '101050903',
    '肇源': '101050904',
    '杜尔伯特': '101050905',
    '七台河': '101051002',
    '勃利': '101051003',
    '鸡西': '101051101',
    '虎林': '101051102',
    '密山': '101051103',
    '鸡东': '101051104',
    '鹤岗': '101051201',
    '绥滨': '101051202',
    '萝北': '101051203',
    '双鸭山': '101051301',
    '集贤': '101051302',
    '宝清': '101051303',
    '饶河': '101051304',
    '长春': '101060101',
    '农安': '101060102',
    '德惠': '101060103',
    '九台': '101060104',
    '榆树': '101060105',
    '双阳': '101060106',
    '吉林': '101060201',
    '舒兰': '101060202',
    '永吉': '101060203',
    '蛟河': '101060204',
    '磐石': '101060205',
    '桦甸': '101060206',
    '延吉': '101060301',
    '敦化': '101060302',
    '安图': '101060303',
    '汪清': '101060304',
    '和龙': '101060305',
    '龙井': '101060307',
    '珲春': '101060308',
    '图们': '101060309',
    '松江': '101060310',
    '延边': '101060312',
    '二道': '101060313',
    '四平': '101060401',
    '双辽': '101060402',
    '梨树': '101060403',
    '公主岭': '101060404',
    '伊通': '101060405',
    '通化': '101060501',
    '梅河口': '101060502',
    '柳河': '101060503',
    '辉南': '101060504',
    '集安': '101060505',
    '通化县': '101060506',
    '白城': '101060601',
    '洮南': '101060602',
    '大安': '101060603',
    '镇赉': '101060604',
    '通榆': '101060605',
    '辽源': '101060701',
    '东丰': '101060702',
    '松原': '101060801',
    '乾安': '101060802',
    '前郭': '101060803',
    '长岭': '101060804',
    '扶余': '101060805',
    '白山': '101060901',
    '靖宇': '101060902',
    '临江': '101060903',
    '东岗': '101060904',
    '长白': '101060905',
    '沈阳': '101070101',
    '辽中': '101070103',
    '康平': '101070104',
    '法库': '101070105',
    '新民': '101070106',
    '大连': '101070201',
    '瓦房店': '101070202',
    '金州': '101070203',
    '普兰店': '101070204',
    '旅顺': '101070205',
    '长海': '101070206',
    '庄河': '101070207',
    '鞍山': '101070301',
    '台安': '101070302',
    '岫岩': '101070303',
    '海城': '101070304',
    '抚顺': '101070401',
    '清原': '101070403',
    '章党': '101070404',
    '本溪': '101070501',
    '本溪县': '101070502',
    '桓仁': '101070504',
    '丹东': '101070601',
    '凤城': '101070602',
    '宽甸': '101070603',
    '东港': '101070604',
    '锦州': '101070701',
    '凌海': '101070702',
    '北宁': '101070703',
    '义县': '101070704',
    '黑山': '101070705',
    '北镇': '101070706',
    '营口': '101070801',
    '大石桥': '101070802',
    '盖州': '101070803',
    '阜新': '101070901',
    '彰武': '101070902',
    '辽阳': '101071001',
    '辽阳县': '101071002',
    '灯塔': '101071003',
    '铁岭': '101071101',
    '开原': '101071102',
    '昌图': '101071103',
    '西丰': '101071104',
    '朝阳': '101071201',
    '凌源': '101071203',
    '喀左': '101071204',
    '北票': '101071205',
    '建平县': '101071207',
    '盘锦': '101071301',
    '大洼': '101071302',
    '盘山': '101071303',
    '葫芦岛': '101071401',
    '建昌': '101071402',
    '绥中': '101071403',
    '兴城': '101071404',
    '呼和浩特': '101080101',
    '土默特左旗': '101080102',
    '托克托': '101080103',
    '和林格尔': '101080104',
    '清水河': '101080105',
    '呼和浩特市郊区': '101080106',
    '武川': '101080107',
    '包头': '101080201',
    '白云鄂博': '101080202',
    '满都拉': '101080203',
    '土默特右旗': '101080204',
    '固阳': '101080205',
    '达尔罕茂明安联合旗': '101080206',
    '乌海': '101080301',
    '集宁': '101080401',
    '卓资': '101080402',
    '化德': '101080403',
    '商都': '101080404',
    '希拉穆仁': '101080405',
    '兴和': '101080406',
    '凉城': '101080407',
    '察哈尔右翼前旗': '101080408',
    '察哈尔右翼中旗': '101080409',
    '察哈尔右翼后旗': '101080410',
    '四子王旗': '101080411',
    '丰镇': '101080412',
    '通辽': '101080501',
    '舍伯吐': '101080502',
    '科尔沁左翼中旗': '101080503',
    '科尔沁左翼后旗': '101080504',
    '青龙山': '101080505',
    '开鲁': '101080506',
    '库伦旗': '101080507',
    '奈曼旗': '101080508',
    '扎鲁特旗': '101080509',
    '高力板': '101080510',
    '巴雅尔吐胡硕': '101080511',
    '赤峰': '101080601',
    '阿鲁科尔沁旗': '101080603',
    '浩尔吐': '101080604',
    '巴林左旗': '101080605',
    '巴林右旗': '101080606',
    '林西': '101080607',
    '克什克腾旗': '101080608',
    '翁牛特旗': '101080609',
    '岗子': '101080610',
    '喀喇沁旗': '101080611',
    '八里罕': '101080612',
    '宁城': '101080613',
    '敖汉旗': '101080614',
    '宝国吐': '101080615',
    '鄂尔多斯': '101080701',
    '达拉特旗': '101080703',
    '准格尔旗': '101080704',
    '鄂托克前旗': '101080705',
    '河南': '101080706',
    '伊克乌素': '101080707',
    '鄂托克旗': '101080708',
    '杭锦旗': '101080709',
    '乌审旗': '101080710',
    '伊金霍洛旗': '101080711',
    '乌审召': '101080712',
    '东胜': '101080713',
    '临河': '101080801',
    '五原': '101080802',
    '磴口': '101080803',
    '乌拉特前旗': '101080804',
    '大佘太': '101080805',
    '乌拉特中旗': '101080806',
    '乌拉特后旗': '101080807',
    '海力素': '101080808',
    '那仁宝力格': '101080809',
    '杭锦后旗': '101080810',
    '锡林浩特': '101080901',
    '二连浩特': '101080903',
    '阿巴嘎旗': '101080904',
    '苏尼特左旗': '101080906',
    '苏尼特右旗': '101080907',
    '朱日和': '101080908',
    '东乌珠穆沁旗': '101080909',
    '西乌珠穆沁旗': '101080910',
    '太仆寺旗': '101080911',
    '镶黄旗': '101080912',
    '正镶白旗': '101080913',
    '正兰旗': '101080914',
    '多伦': '101080915',
    '博克图': '101080916',
    '乌拉盖': '101080917',
    '呼伦贝尔': '101081000',
    '海拉尔': '101081001',
    '小二沟': '101081002',
    '阿荣旗': '101081003',
    '莫力达瓦旗': '101081004',
    '鄂伦春旗': '101081005',
    '鄂温克旗': '101081006',
    '陈巴尔虎旗': '101081007',
    '新巴尔虎左旗': '101081008',
    '新巴尔虎右旗': '101081009',
    '满洲里': '101081010',
    '牙克石': '101081011',
    '扎兰屯': '101081012',
    '额尔古纳': '101081014',
    '根河': '101081015',
    '图里河': '101081016',
    '乌兰浩特': '101081101',
    '阿尔山': '101081102',
    '科尔沁右翼中旗': '101081103',
    '胡尔勒': '101081104',
    '扎赉特旗': '101081105',
    '索伦': '101081106',
    '突泉': '101081107',
    '霍林郭勒': '101081108',
    '阿拉善左旗': '101081201',
    '阿拉善右旗': '101081202',
    '额济纳旗': '101081203',
    '拐子湖': '101081204',
    '吉兰太': '101081205',
    '锡林高勒': '101081206',
    '头道湖': '101081207',
    '中泉子': '101081208',
    '巴彦诺尔贡': '101081209',
    '雅布赖': '101081210',
    '乌斯太': '101081211',
    '孪井滩': '101081212',
    '石家庄': '101090101',
    '井陉': '101090102',
    '正定': '101090103',
    '栾城': '101090104',
    '行唐': '101090105',
    '灵寿': '101090106',
    '高邑': '101090107',
    '深泽': '101090108',
    '赞皇': '101090109',
    '无极': '101090110',
    '平山': '101090111',
    '元氏': '101090112',
    '赵县': '101090113',
    '辛集': '101090114',
    '藁城': '101090115',
    '晋州': '101090116',
    '新乐': '101090117',
    '保定': '101090201',
    '满城': '101090202',
    '阜平': '101090203',
    '徐水': '101090204',
    '唐县': '101090205',
    '高阳': '101090206',
    '容城': '101090207',
    '涞源': '101090209',
    '望都': '101090210',
    '安新': '101090211',
    '易县': '101090212',
    '曲阳': '101090214',
    '蠡县': '101090215',
    '顺平': '101090216',
    '雄县': '101090217',
    '涿州': '101090218',
    '定州': '101090219',
    '安国': '101090220',
    '高碑店': '101090221',
    '清苑': '101090224',
    '张家口': '101090301',
    '宣化': '101090302',
    '张北': '101090303',
    '康保': '101090304',
    '沽源': '101090305',
    '尚义': '101090306',
    '蔚县': '101090307',
    '阳原': '101090308',
    '怀安': '101090309',
    '万全': '101090310',
    '怀来': '101090311',
    '涿鹿': '101090312',
    '赤城': '101090313',
    '崇礼': '101090314',
    '承德': '101090402',
    '承德县': '101090403',
    '兴隆': '101090404',
    '平泉': '101090405',
    '滦平': '101090406',
    '隆化': '101090407',
    '丰宁': '101090408',
    '宽城': '101090409',
    '围场': '101090410',
    '唐山': '101090501',
    '丰南': '101090502',
    '丰润': '101090503',
    '滦县': '101090504',
    '滦南': '101090505',
    '乐亭': '101090506',
    '迁西': '101090507',
    '玉田': '101090508',
    '唐海': '101090509',
    '遵化': '101090510',
    '迁安': '101090511',
    '曹妃甸': '101090512',
    '廊坊': '101090601',
    '固安': '101090602',
    '永清': '101090603',
    '香河': '101090604',
    '大城': '101090605',
    '文安': '101090606',
    '大厂': '101090607',
    '霸州': '101090608',
    '三河': '101090609',
    '沧州': '101090701',
    '青县': '101090702',
    '东光': '101090703',
    '海兴': '101090704',
    '盐山': '
  • 3
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
要使用 Python 创建桌面天气查询小程序,可以利用第三方 API 获取天气信息,然后使用 Tkinter 创建 GUI 界面,将获取到的天气信息显示在界面上。 以下是一个简单的示例程序,使用了和风天气 API 获取天气信息,使用了 Tkinter 创建 GUI 界面: ```python import tkinter as tk import requests # 和风天气 API 的 URL url = "https://free-api.heweather.net/s6/weather/now" # 在和风天气网站上申请的 API Key key = "your_api_key" # 创建窗口 window = tk.Tk() window.title("天气查询") window.geometry("400x300") # 创建标签和输入框 city_label = tk.Label(window, text="请输入城市称:") city_label.pack() city_entry = tk.Entry(window) city_entry.pack() # 创建查询按钮 def get_weather(): # 获取用户输入城市称 city = city_entry.get() # 发送 API 请求,获取天气信息 params = {"location": city, "key": key} response = requests.get(url, params=params) data = response.json() # 解析天气信息 weather = data["HeWeather6"][0]["now"]["cond_txt"] temperature = data["HeWeather6"][0]["now"]["tmp"] # 在标签中显示天气信息 result_label["text"] = f"{city}的天气:{weather},温度:{temperature}℃" query_button = tk.Button(window, text="查询", command=get_weather) query_button.pack() # 创建显示天气信息的标签 result_label = tk.Label(window, text="") result_label.pack() # 启动消息循环 window.mainloop() ``` 需要注意的是,这个示例程序只是一个简单的演示,实际应用中还需要考虑很多其他因素,比如异常处理、用户输入验证等。另外,和风天气 API 并不是免费的,需要在其网站上申请 API Key 才能使用。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值