Python3 网络爬虫,获取全部省会城市(含直辖市)当前的气温,按当前气温从高到低排序后输出。

网络编程技术实验二
实验内容:
用python client编写一个网络爬虫,获取全部省会城市(含直辖市)当前的气温,按当前气温从高到低排序后输出。
实验目的:
1)掌握Python Client编程方法。
2)掌握Python 排序的方法。
实验要求:
1)运行程序, 能获取正确的结果
2)输出数据要格式整齐。

完整代码如下

import urllib.request  # 提取网址数据
import gzip
import json
from operator import itemgetter#result 用来装爬虫爬取到的数据
result = {}
def get_weather_data(name):#city_name = input('请输入要查询的城市名称:')city_name = name# 网址1只需要输入城市名,网址2需要输入城市代码# 说明:URL只允许一部分ASCII字符,其他字符(如汉字)是不符合标准的,此时就要引用quote进行编码转换url = 'http://wthrcdn.etouch.cn/weather_mini?city=' + urllib.parse.quote(city_name)# 用urllib.request模块的urlopen()获取指定网页页面,weather_data = urllib.request.urlopen(url)  # HTTPResponse类型  <http.client.HTTPResponse object at 0x00000000048BC908># urlopen返回对象提供方法read():对HTTPResponse类型数据进行操作weather_data = weather_data.read()# 解压网页数据# weather_data的数据格式为bytes类型,需要decode()解码,转换成str类型weather_data = gzip.decompress(weather_data).decode('utf-8')# 将json数据转换为dict数据weather_dict = json.loads(weather_data)return weather_dictdef show_weather(weather_data):# 将形参数据值即(return weather_dict)赋值给这里的weather_dict变量weather_dict = weather_dataif weather_dict.get('desc') == 'invilad-citykey':print('你输入的城市名有误,或者天气中心未收录你所在城市')elif weather_dict.get('desc') == 'OK':result[weather_dict.get('data').get('city')] = int(weather_dict.get('data').get('wendu'))forecast = weather_dict.get('data').get('forecast')#print('城市:', weather_dict.get('data').get('city')+'  温度:', weather_dict.get('data').get('wendu') + '℃ '+'  日期:', forecast[0].get('date'))if __name__ == '__main__':citys = ['北京','天津', '上海', '重庆','南宁','拉萨','银川','乌鲁木齐','呼和浩特','香港', '澳门' ,'台北','济南', '石家庄', '长春', '哈尔滨', '沈阳',   '兰州','太原', '西安', '郑州', '合肥', '南京','杭州', '福州', '广州', '南昌','海口',  '贵阳', '长沙', '武汉', '成都', '昆明',  '西宁']for city_name in citys:show_weather(get_weather_data(city_name))sort_list = sorted(result.items(), key=itemgetter(1),reverse = True)print("查询全部省会城市(含直辖市)当前的温度从高到低排序如下")for city_item in sort_list:print(city_item[0] + ':',city_item[1],'°C')print("一共查询了{}个城市".format(len(sort_list)))

排序所用方法的原理如下图

程序运行演示图

参考博客
实时天气----Python
免费天气分享API
中国全部省会(含直辖市)名单
Python3 字典排序

Python3 网络爬虫,获取全部省会城市(含直辖市)当前的气温,按当前气温从高到低排序后输出。相关推荐

  1. [Python3网络爬虫开发实战] 7-动态渲染页面爬取-4-使用Selenium爬取淘宝商品

    在前一章中,我们已经成功尝试分析Ajax来抓取相关数据,但是并不是所有页面都可以通过分析Ajax来完成抓取.比如,淘宝,它的整个页面数据确实也是通过Ajax获取的,但是这些Ajax接口参数比较复杂,可 ...

  2. 【Python3网络爬虫开发实战】3-基本库的使用 1.2-处理异常

    前一节我们了解了请求的发送过程,但是在网络不好的情况下,如果出现了异常,该怎么办呢?这时如果不处理这些异常,程序很可能因报错而终止运行,所以异常处理还是十分有必要的. urllib的error模块定义 ...

  3. 《Python3网络爬虫开发实战(第二版)》上市了!!!!

    " 阅读本文大概需要 5 分钟. " 告诉大家一个好消息:我的好朋友崔庆才老师的<Python3网络爬虫开发实战(第二版)>现在正式上市了!!!! 没错,就是这本: 就 ...

  4. 【Python3网络爬虫开发实战】4-解析库的使用-3 使用pyquery

    在上一节中,我们介绍了Beautiful Soup的用法,它是一个非常强大的网页解析库,你是否觉得它的一些方法用起来有点不适应?有没有觉得它的CSS选择器的功能没有那么强大? 如果你对Web有所涉及, ...

  5. python3 爬虫实例_【实战练习】Python3网络爬虫快速入门实战解析(上)

    原标题:[实战练习]Python3网络爬虫快速入门实战解析(上) 摘要 使用python3学习网络爬虫,快速入门静态网站爬取和动态网站爬取 [ 前言 ] 强烈建议:请在电脑的陪同下,阅读本文.本文以实 ...

  6. 【Python3网络爬虫开发实战】 1.7-App爬取相关库的安装

    [摘要] 除了Web网页,爬虫也可以抓取App的数据.App中的页面要加载出来,首先需要获取数据,而这些数据一般是通过请求服务器的接口来获取的.由于App没有浏览器这种可以比较直观地看到后台请求的工具 ...

  7. tensorflow精进之路(十八)——python3网络爬虫(中)

    1.概述 上一节简单的介绍了一些python3网络爬虫的知识,这一节就运用上一节的知识写个小demo,用于爬去汽车之家网站的汽车厂商及车型名称. 2.打开待爬取网页 打开汽车之家官网, https:/ ...

  8. Python学习——(2)通过网络爬虫获取数据

    通过网络爬虫获取数据 1. 和爬虫有关的HTTP ​ HTTP是网络数据通信的基础.在本节中会围绕Python网络爬虫讲述常用HTTP知识点. 1.1 基于HTTP的请求处理流程 ​ 当用户在浏览器的 ...

  9. 《崔庆才Python3网络爬虫开发实战教程》学习笔记(3):抓取猫眼电影榜单TOP100电影,并存入Excel表格

    本篇博文是自己在学习崔庆才的<Python3网络爬虫开发实战教程>的学习笔记系列,如果你也要这套视频教程的话,关注我公众号[小众技术],关注后回复[PYTHON],无套路免费送你一个学习大 ...

最新文章

  1. Javascript-入门
  2. 【职场】程序员摆地摊都能月入过万,是真的吗?
  3. Bio->Nio->Selector->Epoll->Netty
  4. randn函数加噪声_NLP入门指南01:感知机、激活函数、损失函数
  5. Linux gdb多进程、多线程调试
  6. ListView(列表)
  7. Linux服务器之间传输文件 scp命令
  8. 关于linux低端内存
  9. [转载] numpy教程:逻辑函数Logic functions
  10. 5)Thymeleaf 模板布局 th:fragment、th:replace、th:insert、th:remove
  11. crontab导致磁盘空间满问题的解决
  12. 网线不要离笔记本电源适配器太近
  13. python求15 17 23 65 97的因数_Python学习记录15
  14. 就业推荐表鉴计算机水平,毕业生就业推荐表的鉴定评语
  15. 【猿说VUE】Vue列表渲染
  16. 高并发解决方案——提升高并发量服务器性能解决思路
  17. 【单片机仿真】(九)指令系统 — 算术运算指令 之 ADD、ADDC、SUBB、INC、DEC、DA
  18. linux内存占用过高问题解决方法
  19. 人机交互-11-往年试卷
  20. 福克斯连接android手机,福克斯改装安卓9寸大屏幕导航和行车记录仪

热门文章

  1. 【多媒体课件制作软件】Focusky教程 | 怎样画出水平线、垂直线?
  2. Word转成PDF后字体变了是怎么回事?
  3. 2018俄罗斯世界杯观战指南记录簿
  4. php http keep alive,HTTP的KeepAlive是开启还是关闭?
  5. 在华为写了十几年代码,一个程序员的自我修养
  6. 视频分享平台PeerTube的搭建
  7. 常用px, pt, em 换算表
  8. 模块化可重构显控系统系列方案
  9. 女程序员微信表白遭拒精神失常 程序员表示七夕该如何过
  10. CDR中将文档发布为PDF文件的教程