Skip to content

Instantly share code, notes, and snippets.

@selfboot
Created April 18, 2013 09:52
Show Gist options
  • Save selfboot/5411548 to your computer and use it in GitHub Desktop.
Save selfboot/5411548 to your computer and use it in GitHub Desktop.
weather.py: 获取天气信息,默认显示南阳新乡天气,可以在脚本后面加参数指定特定地点的天气。
#! /usr/bin/env python
# -*- coding: utf-8 -*-
import requests
import sys
CITY_RECORD = {
# 直辖市
"北京": "101010100", "上海": "101020100",
"天津": "101030100", "重庆": "101040100",
# 特别行政区
"香港": "101320101", "澳门": "101330101",
# 黑龙江
"哈尔滨": "101050101", "齐齐哈尔": "101050201",
"牡丹江": "101050301", "大庆": "101050901",
"伊春": "101050801", "双鸭山": "101051301",
"鹤岗": "101051201", "鸡西": "101051101",
"佳木斯": "101050401", "七台河": "101051002",
"黑河": "101050601", "绥化": "101050501",
"大兴安岭": "101050701",
# 吉林
"长春": "101060101", "延吉": "101060301",
"吉林": "101060201", "白山": "101060901",
"白城": "101060601", "四平": "101060401",
"松原": "101060801", "辽源": "101060701",
"大安": "101060603", "通化": "101060501",
# 辽宁
"沈阳": "101070101", "大连": "101070201",
"葫芦岛": "101071401", "盘锦": "101071301",
"本溪": "101070501", "抚顺": "101070401",
"铁岭": "101071101", "辽阳": "101071001",
"营口": "101070801", "阜新": "101070901",
"朝阳": "101071201", "锦州": "101070701",
"丹东": "101070601", "鞍山": "101070301",
# 内蒙古
"呼和浩特": "101080101", "呼伦贝尔": "101081000",
"锡林浩特": "101080901", "包头": "101080201",
"赤峰": "101080601", "海拉尔": "101081001",
"乌海": "101080301", "鄂尔多斯": "101080701",
"通辽": "101080501",
# 河北
"石家庄": "101090101", "唐山": "101090501",
"张家口": "101090301", "廊坊": "101090601",
"邢台": "101090901", "邯郸": "101091001",
"沧州": "101090701", "衡水": "101090801",
"承德": "101090402", "保定": "101090201",
"秦皇岛": "101091101",
# 河南
"郑州": "101180101", "开封": "101180801",
"洛阳": "101180901", "平顶山": "101180501",
"焦作": "101181101", "鹤壁": "101181201",
"新乡": "101180301", "安阳": "101180201",
"濮阳": "101181301", "许昌": "101180401",
"漯河": "101181501", "三门峡": "101181701",
"南阳": "101180701", "商丘": "101181001",
"信阳": "101180601", "周口": "101181401",
"驻马店": "101181601",
# 山东
"济南": "101120101", "青岛": "101120201",
"淄博": "101120301", "威海": "101121301",
"曲阜": "101120710", "临沂": "101120901",
"烟台": "101120501", "枣庄": "101121401",
"聊城": "101121701", "济宁": "101120701",
"菏泽": "101121001", "泰安": "101120801",
"日照": "101121501", "东营": "101121201",
"德州": "101120401", "滨州": "101121101",
"莱芜": "101121601", "潍坊": "101120601",
# 山西
"太原": "101100101", "阳泉": "101100301",
"晋城": "101100601", "晋中": "101100401",
"临汾": "101100701", "运城": "101100801",
"长治": "101100501", "朔州": "101100901",
"忻州": "101101001", "大同": "101100201",
"吕梁": "101101101",
# 江苏
"南京": "101190101", "苏州": "101190401",
"昆山": "101190404", "南通": "101190501",
"太仓": "101190408", "吴县": "101190406",
"徐州": "101190801", "宜兴": "101190203",
"镇江": "101190301", "淮安": "101190901",
"常熟": "101190402", "盐城": "101190701",
"泰州": "101191201", "无锡": "101190201",
"连云港": "101191001", "扬州": "101190601",
"常州": "101191101", "宿迁": "101191301",
# 安徽
"合肥": "101220101", "巢湖": "101221601",
"蚌埠": "101220201", "安庆": "101220601",
"六安": "101221501", "滁州": "101221101",
"马鞍山": "101220501", "阜阳": "101220801",
"宣城": "101221401", "铜陵": "101221301",
"淮北": "101221201", "芜湖": "101220301",
"毫州": "101220901", "宿州": "101220701",
"淮南": "101220401", "池州": "101221701",
# 陕西
"西安": "101110101", "韩城": "101110510",
"安康": "101110701", "汉中": "101110801",
"宝鸡": "101110901", "咸阳": "101110200",
"榆林": "101110401", "渭南": "101110501",
"商洛": "101110601", "铜川": "101111001",
"延安": "101110300",
# 宁夏
"银川": "101170101", "固原": "101170401",
"中卫": "101170501", "石嘴山": "101170201",
"吴忠": "101170301",
# 甘肃
"兰州": "101160101", "白银": "101161301",
"庆阳": "101160401", "酒泉": "101160801",
"天水": "101160901", "武威": "101160501",
"张掖": "101160701", "甘南": "101050204",
"临夏": "101161101", "平凉": "101160301",
"定西": "101160201", "金昌": "101160601",
# 青海
"西宁": "101150101", "海北": "101150801",
"海西": "101150701", "黄南": "101150301",
"果洛": "101150501", "玉树": "101150601",
"海东": "101150201", "海南": "101150401",
# 湖北
"武汉": "101200101", "宜昌": "101200901",
"黄冈": "101200501", "恩施": "101201001",
"荆州": "101200801", "神农架": "101201201",
"十堰": "101201101", "咸宁": "101200701",
"襄阳": "101200201", "孝感": "101200401",
"随州": "101201301", "黄石": "101200601",
"荆门": "101201401", "鄂州": "101200301",
# 湖南
"长沙": "101250101", "邵阳": "101250901",
"常德": "101250601", "郴州": "101250501",
"吉首": "101251501", "株洲": "101250301",
"娄底": "101250801", "湘潭": "101250201",
"益阳": "101250701", "永州": "101251401",
"岳阳": "101251001", "衡阳": "101250401",
"怀化": "101251201", "韶山": "101250202",
"张家界": "101251101",
# 浙江
"杭州": "101210101", "湖州": "101210201",
"金华": "101210901", "宁波": "101210401",
"丽水": "101210801", "绍兴": "101210501",
"衢州": "101211001", "嘉兴": "101210301",
"台州": "101210601", "舟山": "101211101",
"温州": "101210701",
# 江西
"南昌": "101240101", "萍乡": "101240901",
"九江": "101240201", "上饶": "101240301",
"抚州": "101240401", "吉安": "101240601",
"鹰潭": "101241101", "宜春": "101240501",
"新余": "101241001", "景德镇": "101240801",
"赣州": "101240701",
# 福建
"福州": "101230101", "厦门": "101230201",
"龙岩": "101230701", "南平": "101230901",
"宁德": "101230301", "莆田": "101230401",
"泉州": "101230501", "三明": "101230801",
"漳州": "101230601",
# 贵州
"贵阳": "101260101", "安顺": "101260301",
"赤水": "101260208", "遵义": "101260201",
"铜仁": "101260601", "六盘水": "101260801",
"毕节": "101260701", "凯里": "101260501",
"都匀": "101260401",
# 四川
"成都": "101270101", "泸州": "101271001",
"内江": "101271201", "凉山": "101271601",
"阿坝": "101271901", "巴中": "101270901",
"广元": "101272101", "乐山": "101271401",
"绵阳": "101270401", "德阳": "101272001",
"攀枝花": "101270201", "雅安": "101271701",
"宜宾": "101271101", "自贡": "101270301",
"甘孜州": "101271801", "达州": "101270601",
"资阳": "101271301", "广安": "101270801",
"遂宁": "101270701", "眉山": "101271501",
"南充": "101270501",
# 广东
"广州": "101280101", "深圳": "101280601",
"潮州": "101281501", "韶关": "101280201",
"湛江": "101281001", "惠州": "101280301",
"清远": "101281301", "东莞": "101281601",
"江门": "101281101", "茂名": "101282001",
"肇庆": "101280901", "汕尾": "101282101",
"河源": "101281201", "揭阳": "101281901",
"梅州": "101280401", "中山": "101281701",
"德庆": "101280905", "阳江": "101281801",
"云浮": "101281401", "珠海": "101280701",
"汕头": "101280501", "佛山": "101280800",
# 广西
"南宁": "101300101", "桂林": "101300501",
"阳朔": "101300510", "柳州": "101300301",
"梧州": "101300601", "玉林": "101300901",
"桂平": "101300802", "贺州": "101300701",
"钦州": "101301101", "贵港": "101300801",
"防城港": "101301401", "百色": "101301001",
"北海": "101301301", "河池": "101301201",
"来宾": "101300401", "崇左": "101300201",
# 云南
"昆明": "101290101", "保山": "101290501",
"楚雄": "101290801", "德宏": "101291501",
"红河": "101290301", "临沧": "101291101",
"怒江": "101291201", "曲靖": "101290401",
"思茅": "101290901", "文山": "101290601",
"玉溪": "101290701", "昭通": "101291001",
"丽江": "101291401", "大理": "101290201",
# 海南
"海口": "101310101", "三亚": "101310201",
"儋州": "101310205", "琼山": "101310102",
"通什": "101310222", "文昌": "101310212",
# 新疆
"乌鲁木齐": "101130101", "阿勒泰": "101131401",
"阿克苏": "101130801", "昌吉": "101130401",
"哈密": "101131201", "和田": "101131301",
"喀什": "101130901", "克拉玛依": "101130201",
"石河子": "101130301", "塔城": "101131101",
"库尔勒": "101130601", "吐鲁番": "101130501",
"伊宁": "101131001",
# 西藏
"拉萨": "101140101", "阿里": "101140701",
"昌都": "101140501", "那曲": "101140601",
"日喀则": "101140201", "山南": "101140301",
"林芝": "101140401",
# 台湾
"台北": "101340102", "高雄": "101340201",
}
def get_weather(city_id):
base_url = "http://m.weather.com.cn/data/"
city_url = base_url + city_id + ".html"
try:
r = requests.get(city_url)
except:
print "network isn't avilable..."
return
weather_info = r.json()
date = weather_info["weatherinfo"]["date_y"][5:]
week = weather_info["weatherinfo"]["week"]
# fchh = weather_info["weatherinfo"]["fchh"]
city_name = weather_info["weatherinfo"]["city"]
today_temp = weather_info["weatherinfo"]["temp1"]
today_wea = weather_info["weatherinfo"]["weather1"]
tom_temp = weather_info["weatherinfo"]["temp2"]
tom_wea = weather_info["weatherinfo"]["weather2"]
after_temp = weather_info["weatherinfo"]["temp3"]
after_wea = weather_info["weatherinfo"]["weather3"]
print u"%s--今天是%s%s%s%s, 明天%s%s, 后天%s%s" % (
city_name, date,
week, today_temp,
today_wea, tom_temp,
tom_wea, after_temp,
after_wea
)
if __name__ == "__main__":
get_weather("101180701")
get_weather("101180301")
if len(sys.argv) >= 2:
for city in sys.argv[1:]:
try:
get_weather(CITY_RECORD[city])
except:
print "city not found..."
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment