先上效果图


再上完整代码

import timeimport requests
from prettytable import PrettyTable     #用来打印表格的库
'''
查询当前地点天气的url:https://www.amap.com/service/weather?adcode=110000
各城市对应code的url:https://www.amap.com/service/cityList?version=20207备注:这两个url可以从Network中查看到
'''# 获取地名对应的code
def get_location_dic(location_dic_url,province):# 判断输入的省份名称是否正确list = ['北京市', '天津市', '河北省', '山西省', '内蒙古自治区', '辽宁省', '吉林省', '黑龙江省', '上海市', '江苏省', '浙江省', '安徽省', '福建省', '江西省', '山东省', '河南省','湖北省', '湖南省', '广东省', '广西壮族自治区', '海南省', '重庆市', '四川省', '贵州省', '云南省', '西藏自治区', '陕西省', '甘肃省', '青海省', '宁夏回族自治区','新疆维吾尔自治区', '台湾省', '香港特別行政區', '澳門特別行政區']if province not in list:print('_'*100)print(':( 输入错误!请输入正确的省份名称')print('提示:可输入的省份名称为:')print(list)else:headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/62.0.3202.89 Safari/537.36'}response = requests.get(location_dic_url,headers=headers)response.encoding = response.apparent_encoding# 获取json数据data = response.json()['data']['cityData']['provinces']# 创建字典用于保存各省份的codeprovinces_code_dic = {}for d in data:provinces_code_dic[data[d]['label']] = data[d]['adcode']# 获取指定省份的所有城市的code等基础信息cities_data = data[provinces_code_dic[province]]['cities']# 直辖市没有城市,此时直接返回上一级包含直辖市code信息的内容。if not cities_data:cities_data = [data[provinces_code_dic[province]]]return cities_datareturn ''# 从高德地图返回的json数据中获取关键部分
def get_today_data(url,location_code):weather_url = url + location_coderesponse = requests.get(weather_url)response.encoding = response.apparent_encodingtoday_data = response.json()['data']['data'][0]return today_data# 从以上获取的数据中抽取出当前地点的天气信息并赋值给对象wheather
# 从json数据中可以看出,高德地图的天气数据分为白天和夜晚
def get_wheather(today_data):wheather = {'day_wheather': {'max_temp': today_data['forecast_data'][0]['max_temp'],'min_temp': today_data['forecast_data'][0]['min_temp'],'weather_name': today_data['forecast_data'][0]['weather_name'],'wind_power_desc': today_data['forecast_data'][0]['wind_power_desc'],'wind_direction_desc': today_data['forecast_data'][0]['wind_direction_desc']},'night_wheather': {'max_temp': today_data['forecast_data'][1]['max_temp'],'min_temp': today_data['forecast_data'][1]['min_temp'],'weather_name': today_data['forecast_data'][1]['weather_name'],'wind_power_desc': today_data['forecast_data'][1]['wind_power_desc'],'wind_direction_desc': today_data['forecast_data'][1]['wind_direction_desc']}}return wheatherif __name__ == '__main__':while True:province = input('请输入省份名称:')print('正在爬取,请稍后...')print('')url = 'https://www.amap.com/service/weather?adcode='location_dic_url = 'https://www.amap.com/service/cityList?version=20207'# 定义空列表用来存储所有城市的天气信息all_info = []# 获取各城市对应code及其他信息location_dic_all = get_location_dic(location_dic_url,province)if location_dic_all:# 去除没用信息,只保留 城市:codelocation_dic = [{base['name']:base['adcode'] for base in location_dic_all}]# 提取城市名列表locations = location_dic[0].keys()# 遍历城市名称,将所需信息提取出来全部赋给all_infofor location in locations:today_data = get_today_data(url,location_dic[0][location])wheather = get_wheather(today_data)all_info.append({'location':location,'day_wheather':wheather['day_wheather'],'night_wheather':wheather['night_wheather']})today = today_data['forecast_date']weekday = str(today_data['weekday'])# 数据中含有1-7代表星期,通过字典将其和星期一一对应weekday_dic = {'1':'星期二','2':'星期三','3':'星期四','4':'星期五','5':'星期六','6':'星期日','7':'星期一',}# 调用此模块用于打印表格tb = PrettyTable()tb.field_names = ['城市','早晚','天气','最高温度','最低温度','风力']for x in all_info:tb.add_row([x['location'],'白天',x['day_wheather']['weather_name'],x['day_wheather']['max_temp'],x['day_wheather']['min_temp'],x['day_wheather']['wind_direction_desc'] + ' ' + x['day_wheather']['wind_power_desc']])tb.add_row(['','夜晚',x['night_wheather']['weather_name'],x['night_wheather']['max_temp'],x['night_wheather']['min_temp'],x['night_wheather']['wind_direction_desc'] + ' ' + x['night_wheather']['wind_power_desc']])print('今天是%s %s。%s天气如下:'%(today,weekday_dic[weekday],province))print(tb)print('*'*100)

创作不易,点个赞吧!!

版权声明:如无特殊说明,文章均为本站原创,转载请注明出处
本文链接:https://blog.csdn.net/wsad861512140

Python爬取高德地图各城市天气情况相关推荐

  1. Python爬取高德地图各城市天气

    Python爬取高德地图各城市天气 爬虫练习项目之一.从高德地图json数据接口获取天气.可以获取某省的所有城市天气.高德地图的这个接口还能获取县城的天气,我只写到了市.有兴趣的朋友可以尝试一下. 完 ...

  2. python爬取高德地图_爬虫实战:如何爬取高德地图?

    提起高德地图,咱们每一个人都不会陌生,高德地图是一款非常好用的地区服务软件,很多用户在出行的时候都会使用这款软件,日程用来导航,也可以用来打车,一次呼叫多种车型,用户可以在这里获得更好的服务,随时都可 ...

  3. PYTHON爬取高德地图POI

    PYTHON爬取高德地图POI 使用高德地图API爬取POI数据,首先需要申请高德地图API的KEY和获取<POI分类编码表>,本实例的最后结果是根据不同的poi类型分别生成多个EXCEL ...

  4. python爬取高德地图数据_你的未来有我导航----教你如何爬取高德地图

    简单一文教你如何爬取高德地图 目录 推荐 一. 分析网页结构 二.拿到相关网址 三.代码实现 3.1 查询所有城市名称和编号 3.2 根据编号查询天气 四.完整代码 五.保存结果 一. 分析网页结构 ...

  5. python爬高德地图_利用Python爬取高德地图数据

    准备1.高德开放平台注册账户 https://lbs.amap.com/dev/index 验证手机号码.邮箱后进入开发者后台创建一个应用: 并为该应用添加 Key,服务平台选择 web 服务 申请完 ...

  6. python爬取地图地址_网络爬虫-python爬取高德地图地点

    python爬取你想要的数据,近期由于业务需求,用python爬取了高德地图一些地点的数据,爬出来数据大致情况如下: image 下面是基本流程: 2.安装网络爬取第三方库,主要是下面三个(pip i ...

  7. python爬取高德数据_利用Python爬取高德地图数据

    准备1.高德开放平台注册账户 https://lbs.amap.com/dev/index 验证手机号码.邮箱后进入开发者后台创建一个应用: 并为该应用添加 Key,服务平台选择 web 服务 申请完 ...

  8. python输入数据爬取_利用 Python 爬取高德地图数据

    准备1.高德开放平台注册账户 https://lbs.amap.com/dev/index 验证手机号码.邮箱后进入开发者后台创建一个应用: 并为该应用添加 Key,服务平台选择 web 服务 申请完 ...

  9. python零基础爬虫练习:如何用python爬取高德地图

    大家好,我是大志 这次介绍一个爬取动态网页的超简单的一个小demo. 说到动态网页,你对它了解多少呢? 简单来说,要获取静态网页的网页数据只需要给服务器发送该网页url地址就行,而动态网页的数据因为是 ...

最新文章

  1. Compiere去掉启动时的下面显示的进度条
  2. python了解一下_Python发展史了解一下
  3. 《深入理解计算机系统》读书笔记二:内存,高速缓存存储器
  4. 基于KEIL的stm32远程在线调试
  5. 强化学习(三)---马尔科夫决策过程
  6. go数组详解:数组的定义、遍历、使用细节、二维数组的定义及其遍历
  7. python selenium 点击开始按钮_使用Selenium和Python单击一个按钮
  8. nginx 配置详解_Nginx 配置详解
  9. 公众号的秘密,知道一个biz就够了
  10. python处理遥感数据(NVDI计算、辐射校正)
  11. vsftpd+mysql使用
  12. U-boot第二阶段概述(转)
  13. 西门子基于RS485通讯恒压供水一拖二S7-200SMART_PLC
  14. RAPIDXML 中文手册,根据官方文档完整翻译!
  15. 按键精灵手机助手之实战篇(一)需求理论分析
  16. 一次看过瘾!中国摩博会的“钢铁怪兽”你最爱哪辆?
  17. tomcat启动一直卡在Root WebApplicationContext: initialization completed
  18. 电脑连接热点无internet访问权限_电脑连接手机热点时出来无internet安全是什么意思?...
  19. 【歪门邪道】Android页面上快速实现蒙层引导需求
  20. 如何恢复计算机系统,电脑系统还原,手把手教你电脑系统怎么还原

热门文章

  1. 仿迅雷播放器教程 -- 基于ffmpeg的C++播放器 (1)
  2. 悦拍悦美 高颜值+时尚范nova2s助力升级拍照体验
  3. 解决金仓数据库KingbaseES创建serial列并将其设置为主键约束,同时copy两条及以上数据时报错的问题
  4. LaTex基础排版教程
  5. 幽门螺旋杆菌阳性达到多少进行治疗?一种情况不用治
  6. 英语四级万能写作模板
  7. 更改win10系统C:\Users\中文用户名为英文用户名
  8. TFN D131系列手持式电缆故障测试仪——手持式电缆故障测试仪的基本工作原理及常见电缆波速度参考值
  9. 服务器没有此伴奏文件,yy开直播,播放伴奏就一卡一卡的,不放伴奏就不卡,。是为什么...
  10. 【Node.js】爬虫--抓取新闻标题、图片、文字描述,支持QQ、iFeng