当前位置:网站首页>PyQt5快速开发与实战 10.1 获取城市天气预报
PyQt5快速开发与实战 10.1 获取城市天气预报
2022-07-31 12:26:00 【Ding Jiaxiong】
PyQt5快速开发与实战
文章目录
10. 第10章 PyQt5 实战一:经典程序开发
10.1 获取城市天气预报
发送一个HTTP请求,然后解析请求返回的结果,最后把请求结果显示在窗口中。
10.1.1 获取天气数据
爬虫
获取天气预报网站的HTML页面,然后使用 XPath或 BeautifulSoap解析 HTML页面的内容
天气预报网站提供的API
直接获取结构化数据

安装Requests库
pip install requests

10.1.2 获取不同城市的天气预报API
请求地址:http://www.weather.com.cn/data/sk/城市代码.html
城市代码:
{
"城市代码": [{
"省": "四川",
"市": [{
"市名": "成都",
"编码": "101270101"
}, {
"市名": "自贡",
"编码": "101270301"
}, {
"市名": "绵阳",
"编码": "101270401"
}, {
"市名": "南充",
"编码": "101270501"
}, {
"市名": "达州",
"编码": "101270601"
}, {
"市名": "遂宁",
"编码": "101270701"
}, {
"市名": "广安",
"编码": "101270801"
}, {
"市名": "巴中",
"编码": "101270901"
}, {
"市名": "泸州",
"编码": "101271001"
}, {
"市名": "宜宾",
"编码": "101271101"
}, {
"市名": "内江",
"编码": "101271201"
}, {
"市名": "资阳",
"编码": "101271301"
}, {
"市名": "乐山",
"编码": "101271401"
}, {
"市名": "眉山",
"编码": "101271501"
}, {
"市名": "凉山",
"编码": "101271601"
}, {
"市名": "雅安",
"编码": "101271701"
}, {
"市名": "甘孜",
"编码": "101271801"
}, {
"市名": "阿坝",
"编码": "101271901"
}, {
"市名": "德阳",
"编码": "101272001"
}, {
"市名": "广元",
"编码": "101272101"
}, {
"市名": "攀枝花",
"编码": "101270201"
}]
}, {
"省": "江苏",
"市": [{
"市名": "南京",
"编码": "101190101"
}, {
"市名": "镇江",
"编码": "101190301"
}, {
"市名": "苏州",
"编码": "101190401"
}, {
"市名": "南通",
"编码": "101190501"
}, {
"市名": "扬州",
"编码": "101190601"
}, {
"市名": "宿迁",
"编码": "101191301"
}, {
"市名": "徐州",
"编码": "101190801"
}, {
"市名": "淮安",
"编码": "101190901"
}, {
"市名": "连云港",
"编码": "101191001"
}, {
"市名": "常州",
"编码": "101191101"
}, {
"市名": "泰州",
"编码": "101191201"
}, {
"市名": "无锡",
"编码": "101190201"
}, {
"市名": "盐城",
"编码": "101190701"
}]
}, {
"省": "重庆",
"市": [{
"市名": "重庆",
"编码": "101040100"
}, {
"市名": "合川",
"编码": "101040300"
}, {
"市名": "南川",
"编码": "101040400"
}, {
"市名": "江津",
"编码": "101040500"
}, {
"市名": "万盛",
"编码": "101040600"
}, {
"市名": "渝北",
"编码": "101040700"
}, {
"市名": "北碚",
"编码": "101040800"
}, {
"市名": "巴南",
"编码": "101040900"
}, {
"市名": "长寿",
"编码": "101041000"
}, {
"市名": "黔江",
"编码": "101041100"
}, {
"市名": "万州天城",
"编码": "101041200"
}, {
"市名": "万州龙宝",
"编码": "101041300"
}, {
"市名": "涪陵",
"编码": "101041400"
}, {
"市名": "开县",
"编码": "101041500"
}, {
"市名": "城口",
"编码": "101041600"
}, {
"市名": "云阳",
"编码": "101041700"
}, {
"市名": "巫溪",
"编码": "101041800"
}, {
"市名": "奉节",
"编码": "101041900"
}, {
"市名": "巫山",
"编码": "101042000"
}, {
"市名": "潼南",
"编码": "101042100"
}, {
"市名": "垫江",
"编码": "101042200"
}, {
"市名": "梁平",
"编码": "101042300"
}, {
"市名": "忠县",
"编码": "101042400"
}, {
"市名": "石柱",
"编码": "101042500"
}, {
"市名": "大足",
"编码": "101042600"
}, {
"市名": "荣昌",
"编码": "101042700"
}, {
"市名": "铜梁",
"编码": "101042800"
}, {
"市名": "璧山",
"编码": "101042900"
}, {
"市名": "丰都",
"编码": "101043000"
}, {
"市名": "武隆",
"编码": "101043100"
}, {
"市名": "彭水",
"编码": "101043200"
}, {
"市名": "綦江",
"编码": "101043300"
}, {
"市名": "酉阳",
"编码": "101043400"
}, {
"市名": "秀山",
"编码": "101043600"
}, {
"市名": "沙坪坝",
"编码": "101043700"
}, {
"市名": "永川",
"编码": "101040200"
}]
}, {
"省": "北京",
"市": [{
"市名": "北京",
"编码": "101010100"
}, {
"市名": "朝阳",
"编码": "101010300"
}, {
"市名": "顺义",
"编码": "101010400"
}, {
"市名": "怀柔",
"编码": "101010500"
}, {
"市名": "通州",
"编码": "101010600"
}, {
"市名": "昌平",
"编码": "101010700"
}, {
"市名": "延庆",
"编码": "101010800"
}, {
"市名": "丰台",
"编码": "101010900"
}, {
"市名": "石景山",
"编码": "101011000"
}, {
"市名": "大兴",
"编码": "101011100"
}, {
"市名": "房山",
"编码": "101011200"
}, {
"市名": "密云",
"编码": "101011300"
}, {
"市名": "门头沟",
"编码": "101011400"
}, {
"市名": "平谷",
"编码": "101011500"
}, {
"市名": "八达岭",
"编码": "101011600"
}, {
"市名": "佛爷顶",
"编码": "101011700"
}, {
"市名": "汤河口",
"编码": "101011800"
}, {
"市名": "密云上甸子",
"编码": "101011900"
}, {
"市名": "斋堂",
"编码": "101012000"
}, {
"市名": "霞云岭",
"编码": "101012100"
}, {
"市名": "北京城区",
"编码": "101012200"
}, {
"市名": "海淀",
"编码": "101010200"
}]
}, {
"省": "福建",
"市": [{
"市名": "福州",
"编码": "101230101"
}, {
"市名": "泉州",
"编码": "101230501"
}, {
"市名": "漳州",
"编码": "101230601"
}, {
"市名": "龙岩",
"编码": "101230701"
}, {
"市名": "晋江",
"编码": "101230509"
}, {
"市名": "南平",
"编码": "101230901"
}, {
"市名": "厦门",
"编码": "101230201"
}, {
"市名": "宁德",
"编码": "101230301"
}, {
"市名": "莆田",
"编码": "101230401"
}, {
"市名": "三明",
"编码": "101230801"
}]
}, {
"省": "甘肃",
"市": [{
"市名": "兰州",
"编码": "101160101"
}, {
"市名": "平凉",
"编码": "101160301"
}, {
"市名": "庆阳",
"编码": "101160401"
}, {
"市名": "武威",
"编码": "101160501"
}, {
"市名": "金昌",
"编码": "101160601"
}, {
"市名": "嘉峪关",
"编码": "101161401"
}, {
"市名": "酒泉",
"编码": "101160801"
}, {
"市名": "天水",
"编码": "101160901"
}, {
"市名": "武都",
"编码": "101161001"
}, {
"市名": "临夏",
"编码": "101161101"
}, {
"市名": "合作",
"编码": "101161201"
}, {
"市名": "白银",
"编码": "101161301"
}, {
"市名": "定西",
"编码": "101160201"
}, {
"市名": "张掖",
"编码": "101160701"
}]
}, {
"省": "广东",
"市": [{
"市名": "广州",
"编码": "101280101"
}, {
"市名": "惠州",
"编码": "101280301"
}, {
"市名": "梅州",
"编码": "101280401"
}, {
"市名": "汕头",
"编码": "101280501"
}, {
"市名": "深圳",
"编码": "101280601"
}, {
"市名": "珠海",
"编码": "101280701"
}, {
"市名": "佛山",
"编码": "101280800"
}, {
"市名": "肇庆",
"编码": "101280901"
}, {
"市名": "湛江",
"编码": "101281001"
}, {
"市名": "江门",
"编码": "101281101"
}, {
"市名": "河源",
"编码": "101281201"
}, {
"市名": "清远",
"编码": "101281301"
}, {
"市名": "云浮",
"编码": "101281401"
}, {
"市名": "潮州",
"编码": "101281501"
}, {
"市名": "东莞",
"编码": "101281601"
}, {
"市名": "中山",
"编码": "101281701"
}, {
"市名": "阳江",
"编码": "101281801"
}, {
"市名": "揭阳",
"编码": "101281901"
}, {
"市名": "茂名",
"编码": "101282001"
}, {
"市名": "汕尾",
"编码": "101282101"
}, {
"市名": "韶关",
"编码": "101280201"
}]
}, {
"省": "天津市",
"市": [{
"市名": "天津",
"编码": "101030100"
}, {
"市名": "宝坻",
"编码": "101030300"
}, {
"市名": "东丽",
"编码": "101030400"
}, {
"市名": "西青",
"编码": "101030500"
}, {
"市名": "北辰",
"编码": "101030600"
}, {
"市名": "蓟县",
"编码": "101031400"
}, {
"市名": "汉沽",
"编码": "101030800"
}, {
"市名": "静海",
"编码": "101030900"
}, {
"市名": "津南",
"编码": "101031000"
}, {
"市名": "塘沽",
"编码": "101031100"
}, {
"市名": "大港",
"编码": "101031200"
}, {
"市名": "武清",
"编码": "101030200"
}, {
"市名": "宁河",
"编码": "101030700"
}]
}, {
"省": "上海",
"市": [{
"市名": "上海",
"编码": "101020100"
}, {
"市名": "宝山",
"编码": "101020300"
}, {
"市名": "嘉定",
"编码": "101020500"
}, {
"市名": "南汇",
"编码": "101020600"
}, {
"市名": "浦东",
"编码": "101021300"
}, {
"市名": "青浦",
"编码": "101020800"
}, {
"市名": "松江",
"编码": "101020900"
}, {
"市名": "奉贤",
"编码": "101021000"
}, {
"市名": "崇明",
"编码": "101021100"
}, {
"市名": "徐家汇",
"编码": "101021200"
}, {
"市名": "闵行",
"编码": "101020200"
}, {
"市名": "金山",
"编码": "101020700"
}]
}, {
"省": "河北",
"市": [{
"市名": "石家庄",
"编码": "101090101"
}, {
"市名": "张家口",
"编码": "101090301"
}, {
"市名": "承德",
"编码": "101090402"
}, {
"市名": "唐山",
"编码": "101090501"
}, {
"市名": "秦皇岛",
"编码": "101091101"
}, {
"市名": "沧州",
"编码": "101090701"
}, {
"市名": "衡水",
"编码": "101090801"
}, {
"市名": "邢台",
"编码": "101090901"
}, {
"市名": "邯郸",
"编码": "101091001"
}, {
"市名": "保定",
"编码": "101090201"
}, {
"市名": "廊坊",
"编码": "101090601"
}]
}, {
"省": "河南",
"市": [{
"市名": "郑州",
"编码": "101180101"
}, {
"市名": "新乡",
"编码": "101180301"
}, {
"市名": "许昌",
"编码": "101180401"
}, {
"市名": "平顶山",
"编码": "101180501"
}, {
"市名": "信阳",
"编码": "101180601"
}, {
"市名": "南阳",
"编码": "101180701"
}, {
"市名": "开封",
"编码": "101180801"
}, {
"市名": "洛阳",
"编码": "101180901"
}, {
"市名": "商丘",
"编码": "101181001"
}, {
"市名": "焦作",
"编码": "101181101"
}, {
"市名": "鹤壁",
"编码": "101181201"
}, {
"市名": "濮阳",
"编码": "101181301"
}, {
"市名": "周口",
"编码": "101181401"
}, {
"市名": "漯河",
"编码": "101181501"
}, {
"市名": "驻马店",
"编码": "101181601"
}, {
"市名": "三门峡",
"编码": "101181701"
}, {
"市名": "济源",
"编码": "101181801"
}, {
"市名": "安阳",
"编码": "101180201"
}]
}, {
"省": "安徽",
"市": [{
"市名": "合肥",
"编码": "101220101"
}, {
"市名": "芜湖",
"编码": "101220301"
}, {
"市名": "淮南",
"编码": "101220401"
}, {
"市名": "马鞍山",
"编码": "101220501"
}, {
"市名": "安庆",
"编码": "101220601"
}, {
"市名": "宿州",
"编码": "101220701"
}, {
"市名": "阜阳",
"编码": "101220801"
}, {
"市名": "亳州",
"编码": "101220901"
}, {
"市名": "黄山",
"编码": "101221001"
}, {
"市名": "滁州",
"编码": "101221101"
}, {
"市名": "淮北",
"编码": "101221201"
}, {
"市名": "铜陵",
"编码": "101221301"
}, {
"市名": "宣城",
"编码": "101221401"
}, {
"市名": "六安",
"编码": "101221501"
}, {
"市名": "巢湖",
"编码": "101221601"
}, {
"市名": "池州",
"编码": "101221701"
}, {
"市名": "蚌埠",
"编码": "101220201"
}]
}, {
"省": "浙江",
"市": [{
"市名": "杭州",
"编码": "101210101"
}, {
"市名": "舟山",
"编码": "101211101"
}, {
"市名": "湖州",
"编码": "101210201"
}, {
"市名": "嘉兴",
"编码": "101210301"
}, {
"市名": "金华",
"编码": "101210901"
}, {
"市名": "绍兴",
"编码": "101210501"
}, {
"市名": "台州",
"编码": "101210601"
}, {
"市名": "温州",
"编码": "101210701"
}, {
"市名": "丽水",
"编码": "101210801"
}, {
"市名": "衢州",
"编码": "101211001"
}, {
"市名": "宁波",
"编码": "101210401"
}]
}, {
"省": "广西",
"市": [{
"市名": "南宁",
"编码": "101300101"
}, {
"市名": "柳州",
"编码": "101300301"
}, {
"市名": "来宾",
"编码": "101300401"
}, {
"市名": "桂林",
"编码": "101300501"
}, {
"市名": "梧州",
"编码": "101300601"
}, {
"市名": "防城港",
"编码": "101301401"
}, {
"市名": "贵港",
"编码": "101300801"
}, {
"市名": "玉林",
"编码": "101300901"
}, {
"市名": "百色",
"编码": "101301001"
}, {
"市名": "钦州",
"编码": "101301101"
}, {
"市名": "河池",
"编码": "101301201"
}, {
"市名": "北海",
"编码": "101301301"
}, {
"市名": "崇左",
"编码": "101300201"
}, {
"市名": "贺州",
"编码": "101300701"
}]
}, {
"省": "贵州",
"市": [{
"市名": "贵阳",
"编码": "101260101"
}, {
"市名": "安顺",
"编码": "101260301"
}, {
"市名": "都匀",
"编码": "101260401"
}, {
"市名": "兴义",
"编码": "101260906"
}, {
"市名": "铜仁",
"编码": "101260601"
}, {
"市名": "毕节",
"编码": "101260701"
}, {
"市名": "六盘水",
"编码": "101260801"
}, {
"市名": "遵义",
"编码": "101260201"
}, {
"市名": "凯里",
"编码": "101260501"
}]
}, {
"省": "云南",
"市": [{
"市名": "昆明",
"编码": "101290101"
}, {
"市名": "红河",
"编码": "101290301"
}, {
"市名": "文山",
"编码": "101290601"
}, {
"市名": "玉溪",
"编码": "101290701"
}, {
"市名": "楚雄",
"编码": "101290801"
}, {
"市名": "普洱",
"编码": "101290901"
}, {
"市名": "昭通",
"编码": "101291001"
}, {
"市名": "临沧",
"编码": "101291101"
}, {
"市名": "怒江",
"编码": "101291201"
}, {
"市名": "香格里拉",
"编码": "101291301"
}, {
"市名": "丽江",
"编码": "101291401"
}, {
"市名": "德宏",
"编码": "101291501"
}, {
"市名": "景洪",
"编码": "101291601"
}, {
"市名": "大理",
"编码": "101290201"
}, {
"市名": "曲靖",
"编码": "101290401"
}, {
"市名": "保山",
"编码": "101290501"
}]
}, {
"省": "内蒙古",
"市": [{
"市名": "呼和浩特",
"编码": "101080101"
}, {
"市名": "乌海",
"编码": "101080301"
}, {
"市名": "集宁",
"编码": "101080401"
}, {
"市名": "通辽",
"编码": "101080501"
}, {
"市名": "阿拉善左旗",
"编码": "101081201"
}, {
"市名": "鄂尔多斯",
"编码": "101080701"
}, {
"市名": "临河",
"编码": "101080801"
}, {
"市名": "锡林浩特",
"编码": "101080901"
}, {
"市名": "呼伦贝尔",
"编码": "101081000"
}, {
"市名": "乌兰浩特",
"编码": "101081101"
}, {
"市名": "包头",
"编码": "101080201"
}, {
"市名": "赤峰",
"编码": "101080601"
}]
}, {
"省": "江西",
"市": [{
"市名": "南昌",
"编码": "101240101"
}, {
"市名": "上饶",
"编码": "101240301"
}, {
"市名": "抚州",
"编码": "101240401"
}, {
"市名": "宜春",
"编码": "101240501"
}, {
"市名": "鹰潭",
"编码": "101241101"
}, {
"市名": "赣州",
"编码": "101240701"
}, {
"市名": "景德镇",
"编码": "101240801"
}, {
"市名": "萍乡",
"编码": "101240901"
}, {
"市名": "新余",
"编码": "101241001"
}, {
"市名": "九江",
"编码": "101240201"
}, {
"市名": "吉安",
"编码": "101240601"
}]
}, {
"省": "湖北",
"市": [{
"市名": "武汉",
"编码": "101200101"
}, {
"市名": "黄冈",
"编码": "101200501"
}, {
"市名": "荆州",
"编码": "101200801"
}, {
"市名": "宜昌",
"编码": "101200901"
}, {
"市名": "恩施",
"编码": "101201001"
}, {
"市名": "十堰",
"编码": "101201101"
}, {
"市名": "神农架",
"编码": "101201201"
}, {
"市名": "随州",
"编码": "101201301"
}, {
"市名": "荆门",
"编码": "101201401"
}, {
"市名": "天门",
"编码": "101201501"
}, {
"市名": "仙桃",
"编码": "101201601"
}, {
"市名": "潜江",
"编码": "101201701"
}, {
"市名": "襄樊",
"编码": "101200201"
}, {
"市名": "鄂州",
"编码": "101200301"
}, {
"市名": "孝感",
"编码": "101200401"
}, {
"市名": "黄石",
"编码": "101200601"
}, {
"市名": "咸宁",
"编码": "101200701"
}]
}, {
"省": "宁夏",
"市": [{
"市名": "银川",
"编码": "101170101"
}, {
"市名": "中卫",
"编码": "101170501"
}, {
"市名": "固原",
"编码": "101170401"
}, {
"市名": "石嘴山",
"编码": "101170201"
}, {
"市名": "吴忠",
"编码": "101170301"
}]
}, {
"省": "青海省",
"市": [{
"市名": "西宁",
"编码": "101150101"
}, {
"市名": "黄南",
"编码": "101150301"
}, {
"市名": "海北",
"编码": "101150801"
}, {
"市名": "果洛",
"编码": "101150501"
}, {
"市名": "玉树",
"编码": "101150601"
}, {
"市名": "海西",
"编码": "101150701"
}, {
"市名": "海东",
"编码": "101150201"
}, {
"市名": "海南",
"编码": "101150401"
}]
}, {
"省": "山东",
"市": [{
"市名": "济南",
"编码": "101120101"
}, {
"市名": "潍坊",
"编码": "101120601"
}, {
"市名": "临沂",
"编码": "101120901"
}, {
"市名": "菏泽",
"编码": "101121001"
}, {
"市名": "滨州",
"编码": "101121101"
}, {
"市名": "东营",
"编码": "101121201"
}, {
"市名": "威海",
"编码": "101121301"
}, {
"市名": "枣庄",
"编码": "101121401"
}, {
"市名": "日照",
"编码": "101121501"
}, {
"市名": "莱芜",
"编码": "101121601"
}, {
"市名": "聊城",
"编码": "101121701"
}, {
"市名": "青岛",
"编码": "101120201"
}, {
"市名": "淄博",
"编码": "101120301"
}, {
"市名": "德州",
"编码": "101120401"
}, {
"市名": "烟台",
"编码": "101120501"
}, {
"市名": "济宁",
"编码": "101120701"
}, {
"市名": "泰安",
"编码": "101120801"
}]
}, {
"省": "陕西省",
"市": [{
"市名": "西安",
"编码": "101110101"
}, {
"市名": "延安",
"编码": "101110300"
}, {
"市名": "榆林",
"编码": "101110401"
}, {
"市名": "铜川",
"编码": "101111001"
}, {
"市名": "商洛",
"编码": "101110601"
}, {
"市名": "安康",
"编码": "101110701"
}, {
"市名": "汉中",
"编码": "101110801"
}, {
"市名": "宝鸡",
"编码": "101110901"
}, {
"市名": "咸阳",
"编码": "101110200"
}, {
"市名": "渭南",
"编码": "101110501"
}]
}, {
"省": "山西",
"市": [{
"市名": "太原",
"编码": "101100101"
}, {
"市名": "临汾",
"编码": "101100701"
}, {
"市名": "运城",
"编码": "101100801"
}, {
"市名": "朔州",
"编码": "101100901"
}, {
"市名": "忻州",
"编码": "101101001"
}, {
"市名": "长治",
"编码": "101100501"
}, {
"市名": "大同",
"编码": "101100201"
}, {
"市名": "阳泉",
"编码": "101100301"
}, {
"市名": "晋中",
"编码": "101100401"
}, {
"市名": "晋城",
"编码": "101100601"
}, {
"市名": "吕梁",
"编码": "101101100"
}]
}, {
"省": "新疆",
"市": [{
"市名": "乌鲁木齐",
"编码": "101130101"
}, {
"市名": "石河子",
"编码": "101130301"
}, {
"市名": "昌吉",
"编码": "101130401"
}, {
"市名": "吐鲁番",
"编码": "101130501"
}, {
"市名": "库尔勒",
"编码": "101130601"
}, {
"市名": "阿拉尔",
"编码": "101130701"
}, {
"市名": "阿克苏",
"编码": "101130801"
}, {
"市名": "喀什",
"编码": "101130901"
}, {
"市名": "伊宁",
"编码": "101131001"
}, {
"市名": "塔城",
"编码": "101131101"
}, {
"市名": "哈密",
"编码": "101131201"
}, {
"市名": "和田",
"编码": "101131301"
}, {
"市名": "阿勒泰",
"编码": "101131401"
}, {
"市名": "阿图什",
"编码": "101131501"
}, {
"市名": "博乐",
"编码": "101131601"
}, {
"市名": "克拉玛依",
"编码": "101130201"
}]
}, {
"省": "西藏",
"市": [{
"市名": "拉萨",
"编码": "101140101"
}, {
"市名": "山南",
"编码": "101140301"
}, {
"市名": "阿里",
"编码": "101140701"
}, {
"市名": "昌都",
"编码": "101140501"
}, {
"市名": "那曲",
"编码": "101140601"
}, {
"市名": "日喀则",
"编码": "101140201"
}, {
"市名": "林芝",
"编码": "101140401"
}]
}, {
"省": "台湾",
"市": [{
"市名": "台北县",
"编码": "101340101"
}, {
"市名": "高雄",
"编码": "101340201"
}, {
"市名": "台中",
"编码": "101340401"
}]
}, {
"省": "海南省",
"市": [{
"市名": "海口",
"编码": "101310101"
}, {
"市名": "三亚",
"编码": "101310201"
}, {
"市名": "东方",
"编码": "101310202"
}, {
"市名": "临高",
"编码": "101310203"
}, {
"市名": "澄迈",
"编码": "101310204"
}, {
"市名": "儋州",
"编码": "101310205"
}, {
"市名": "昌江",
"编码": "101310206"
}, {
"市名": "白沙",
"编码": "101310207"
}, {
"市名": "琼中",
"编码": "101310208"
}, {
"市名": "定安",
"编码": "101310209"
}, {
"市名": "屯昌",
"编码": "101310210"
}, {
"市名": "琼海",
"编码": "101310211"
}, {
"市名": "文昌",
"编码": "101310212"
}, {
"市名": "保亭",
"编码": "101310214"
}, {
"市名": "万宁",
"编码": "101310215"
}, {
"市名": "陵水",
"编码": "101310216"
}, {
"市名": "西沙",
"编码": "101310217"
}, {
"市名": "南沙岛",
"编码": "101310220"
}, {
"市名": "乐东",
"编码": "101310221"
}, {
"市名": "五指山",
"编码": "101310222"
}, {
"市名": "琼山",
"编码": "101310102"
}]
}, {
"省": "湖南",
"市": [{
"市名": "长沙",
"编码": "101250101"
}, {
"市名": "株洲",
"编码": "101250301"
}, {
"市名": "衡阳",
"编码": "101250401"
}, {
"市名": "郴州",
"编码": "101250501"
}, {
"市名": "常德",
"编码": "101250601"
}, {
"市名": "益阳",
"编码": "101250700"
}, {
"市名": "娄底",
"编码": "101250801"
}, {
"市名": "邵阳",
"编码": "101250901"
}, {
"市名": "岳阳",
"编码": "101251001"
}, {
"市名": "张家界",
"编码": "101251101"
}, {
"市名": "怀化",
"编码": "101251201"
}, {
"市名": "黔阳",
"编码": "101251301"
}, {
"市名": "永州",
"编码": "101251401"
}, {
"市名": "吉首",
"编码": "101251501"
}, {
"市名": "湘潭",
"编码": "101250201"
}]
}, {
"省": "黑龙江",
"市": [{
"市名": "哈尔滨",
"编码": "101050101"
}, {
"市名": "牡丹江",
"编码": "101050301"
}, {
"市名": "佳木斯",
"编码": "101050401"
}, {
"市名": "绥化",
"编码": "101050501"
}, {
"市名": "黑河",
"编码": "101050601"
}, {
"市名": "双鸭山",
"编码": "101051301"
}, {
"市名": "伊春",
"编码": "101050801"
}, {
"市名": "大庆",
"编码": "101050901"
}, {
"市名": "七台河",
"编码": "101051002"
}, {
"市名": "鸡西",
"编码": "101051101"
}, {
"市名": "鹤岗",
"编码": "101051201"
}, {
"市名": "齐齐哈尔",
"编码": "101050201"
}, {
"市名": "大兴安岭",
"编码": "101050701"
}]
}, {
"省": "吉林",
"市": [{
"市名": "长春",
"编码": "101060101"
}, {
"市名": "延吉",
"编码": "101060301"
}, {
"市名": "四平",
"编码": "101060401"
}, {
"市名": "白山",
"编码": "101060901"
}, {
"市名": "白城",
"编码": "101060601"
}, {
"市名": "辽源",
"编码": "101060701"
}, {
"市名": "松原",
"编码": "101060801"
}, {
"市名": "吉林",
"编码": "101060201"
}, {
"市名": "通化",
"编码": "101060501"
}]
}, {
"省": "辽宁",
"市": [{
"市名": "沈阳",
"编码": "101070101"
}, {
"市名": "鞍山",
"编码": "101070301"
}, {
"市名": "抚顺",
"编码": "101070401"
}, {
"市名": "本溪",
"编码": "101070501"
}, {
"市名": "丹东",
"编码": "101070601"
}, {
"市名": "葫芦岛",
"编码": "101071401"
}, {
"市名": "营口",
"编码": "101070801"
}, {
"市名": "阜新",
"编码": "101070901"
}, {
"市名": "辽阳",
"编码": "101071001"
}, {
"市名": "铁岭",
"编码": "101071101"
}, {
"市名": "朝阳",
"编码": "101071201"
}, {
"市名": "盘锦",
"编码": "101071301"
}, {
"市名": "大连",
"编码": "101070201"
}, {
"市名": "锦州",
"编码": "101070701"
}]
}]
}
以北京为例:测试接口

返回参数
| 名称 | 描述 |
|---|---|
| weatherinfo | 消息根节点 |
| city | 城市中文名 |
| cityid | 城市ID |
| temp | 温度 |
| WD | 风向 |
| WS | 风力 |
| SD | 湿度 |
| WSE | 风力 |
| time | 发布时间 |
| rain | 是否下雨,1有雨,0无雨 |
| idRadar | 是否有雷达图,1有,0无 |
| Radar | 雷达图编号 |
import requests
request = requests.get("http://www.weather.com.cn/data/sk/101010100.html")
request.encoding = 'utf-8'
print("返回结果:%s" % request.json())
print("城市:%s" % request.json()['weatherinfo']['city'])
print("风向:%s" % request.json()['weatherinfo']['WD'])
print("温度:%s" % request.json()['weatherinfo']['temp'] + "℃")
print("风力:%s" % request.json()['weatherinfo']['WS'])
print("湿度:%s" % request.json()['weatherinfo']['SD'])

10.1.3 界面实现

ui文件
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
<class>Form</class>
<widget class="QWidget" name="Form">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>484</width>
<height>409</height>
</rect>
</property>
<property name="windowTitle">
<string>Form</string>
</property>
<widget class="QGroupBox" name="groupBox">
<property name="geometry">
<rect>
<x>10</x>
<y>10</y>
<width>431</width>
<height>251</height>
</rect>
</property>
<property name="title">
<string>查询城市天气</string>
</property>
<widget class="QComboBox" name="weatherComboBox">
<property name="geometry">
<rect>
<x>80</x>
<y>30</y>
<width>221</width>
<height>21</height>
</rect>
</property>
<item>
<property name="text">
<string>北京</string>
</property>
</item>
<item>
<property name="text">
<string>天津</string>
</property>
</item>
<item>
<property name="text">
<string>上海</string>
</property>
</item>
</widget>
<widget class="QTextEdit" name="resultText">
<property name="geometry">
<rect>
<x>10</x>
<y>60</y>
<width>411</width>
<height>181</height>
</rect>
</property>
</widget>
<widget class="QLabel" name="label">
<property name="geometry">
<rect>
<x>20</x>
<y>30</y>
<width>72</width>
<height>21</height>
</rect>
</property>
<property name="text">
<string>城市</string>
</property>
</widget>
</widget>
<widget class="QPushButton" name="queryBtn">
<property name="geometry">
<rect>
<x>90</x>
<y>300</y>
<width>93</width>
<height>28</height>
</rect>
</property>
<property name="text">
<string>查询</string>
</property>
</widget>
<widget class="QPushButton" name="clearBtn">
<property name="geometry">
<rect>
<x>230</x>
<y>300</y>
<width>93</width>
<height>28</height>
</rect>
</property>
<property name="text">
<string>清空</string>
</property>
</widget>
</widget>
<resources/>
<connections>
<connection>
<sender>clearBtn</sender>
<signal>clicked()</signal>
<receiver>Form</receiver>
<slot>clearResult()</slot>
<hints>
<hint type="sourcelabel">
<x>270</x>
<y>314</y>
</hint>
<hint type="destinationlabel">
<x>363</x>
<y>288</y>
</hint>
</hints>
</connection>
<connection>
<sender>queryBtn</sender>
<signal>clicked()</signal>
<receiver>Form</receiver>
<slot>queryWeather()</slot>
<hints>
<hint type="sourcelabel">
<x>161</x>
<y>313</y>
</hint>
<hint type="destinationlabel">
<x>64</x>
<y>286</y>
</hint>
</hints>
</connection>
</connections>
<slots>
<slot>clearResult()</slot>
<slot>queryWeather()</slot>
</slots>
</ui>
10.1.4 将界面文件转为.py文件

WeatherWin.py
# -*- coding: utf-8 -*-
# Form implementation generated from reading ui file 'WeatherWin.ui'
#
# Created by: PyQt5 UI code generator 5.9.2
#
# WARNING! All changes made in this file will be lost!
from PyQt5 import QtCore, QtGui, QtWidgets
class Ui_Form(object):
def setupUi(self, Form):
Form.setObjectName("Form")
Form.resize(484, 409)
self.groupBox = QtWidgets.QGroupBox(Form)
self.groupBox.setGeometry(QtCore.QRect(10, 10, 431, 251))
self.groupBox.setObjectName("groupBox")
self.weatherComboBox = QtWidgets.QComboBox(self.groupBox)
self.weatherComboBox.setGeometry(QtCore.QRect(80, 30, 221, 21))
self.weatherComboBox.setObjectName("weatherComboBox")
self.weatherComboBox.addItem("")
self.weatherComboBox.addItem("")
self.weatherComboBox.addItem("")
self.resultText = QtWidgets.QTextEdit(self.groupBox)
self.resultText.setGeometry(QtCore.QRect(10, 60, 411, 181))
self.resultText.setObjectName("resultText")
self.label = QtWidgets.QLabel(self.groupBox)
self.label.setGeometry(QtCore.QRect(20, 30, 72, 21))
self.label.setObjectName("label")
self.queryBtn = QtWidgets.QPushButton(Form)
self.queryBtn.setGeometry(QtCore.QRect(90, 300, 93, 28))
self.queryBtn.setObjectName("queryBtn")
self.clearBtn = QtWidgets.QPushButton(Form)
self.clearBtn.setGeometry(QtCore.QRect(230, 300, 93, 28))
self.clearBtn.setObjectName("clearBtn")
self.retranslateUi(Form)
self.clearBtn.clicked.connect(Form.clearResult)
self.queryBtn.clicked.connect(Form.queryWeather)
QtCore.QMetaObject.connectSlotsByName(Form)
def retranslateUi(self, Form):
_translate = QtCore.QCoreApplication.translate
Form.setWindowTitle(_translate("Form", "Form"))
self.groupBox.setTitle(_translate("Form", "查询城市天气"))
self.weatherComboBox.setItemText(0, _translate("Form", "北京"))
self.weatherComboBox.setItemText(1, _translate("Form", "天津"))
self.weatherComboBox.setItemText(2, _translate("Form", "上海"))
self.label.setText(_translate("Form", "城市"))
self.queryBtn.setText(_translate("Form", "查询"))
self.clearBtn.setText(_translate("Form", "清空"))
10.1.5 调用主窗口类
# -*- coding: utf-8 -*-
import sys
from PyQt5.QtWidgets import QApplication , QMainWindow
from WeatherWin import Ui_Form
import requests
class MainWindow(QMainWindow ):
def __init__(self, parent=None):
super(MainWindow, self).__init__(parent)
self.ui = Ui_Form()
self.ui.setupUi(self)
def queryWeather(self):
print('* queryWeather ')
cityName = self.ui.weatherComboBox.currentText()
cityCode = self.transCityName(cityName)
rep = requests.get('http://www.weather.com.cn/data/sk/' + cityCode + '.html')
rep.encoding = 'utf-8'
print( rep.json() )
msg1 = '城市: %s' % rep.json()['weatherinfo']['city'] + '\n'
msg2 = '风向: %s' % rep.json()['weatherinfo']['WD'] + '\n'
msg3 = '温度: %s' % rep.json()['weatherinfo']['temp'] + ' 度' + '\n'
msg4 = '风力: %s' % rep.json()['weatherinfo']['WS'] + '\n'
msg5 = '湿度: %s' % rep.json()['weatherinfo']['SD'] + '\n'
result = msg1 + msg2 + msg3 + msg4 + msg5
self.ui.resultText.setText(result)
def transCityName(self ,cityName):
cityCode = ''
if cityName == '北京' :
cityCode = '101010100'
elif cityName == '天津' :
cityCode = '101030100'
elif cityName == '上海' :
cityCode = '101020100'
return cityCode
def clearResult(self):
print('* clearResult ')
self.ui.resultText.clear()
if __name__=="__main__":
from pyqt5_plugins.examples.exampleqmlitem import QtCore
QtCore.QCoreApplication.setAttribute(QtCore.Qt.AA_EnableHighDpiScaling)
app = QApplication(sys.argv)
win = MainWindow()
win.show()
sys.exit(app.exec_())

边栏推荐
- SAP Commerce Cloud Product Review 的添加逻辑
- Hybrid brain-computer interface system based on steady-state visual evoked potentials and attentional EEG
- Getting started with jmeter performance testing steps (performance testing tool jmeter)
- Use docker to build mysql master-slave
- 连续变量离散化教程
- Mysql环境变量的配置(详细图解)
- 【Shader】Shader官方示例[通俗易懂]
- Build a Valentine's Day confession website (super detailed process, package teaching package)
- 基本语法(一)
- Quickly learn database management
猜你喜欢
随机推荐
连续变量离散化教程
想吃菌子,当然是自己上山找了
Exploring Plain Vision Transformer Backbones for Object Detection 论文阅读笔记
alert(1) (haozi.me)靶场练习
dosbox基础使用[通俗易懂]
B/S架构模式的一个整体执行流程
跨境电商小知识之跨境电商物流定义以及方式讲解
深圳某游戏研发公司每个工位都装监控,网友:堪比“坐牢”!
Data Lake (19): SQL API reads Kafka data and writes it to Iceberg table in real time
最长算术(暑假每日一题 11)
vivado里那些看不懂的原语
ipv4和ipv6对比(IPV4)
JVS开发套件产品定位
VBA输出日志到工作簿demo
Wearing detection and action recognition of protective gear based on pose estimation
Spark GC日志分析
Character Functions and String Functions
如何正确地把服务器端返回的文件二进制流写入到本地保存成文件
Basic use of dosbox [easy to understand]
通过斐波那契数再谈函数递归2.0









