10分钟教你用Python打造微信天气预报机器人
01 前言
最近武汉的天气越来越恶劣了。动不动就下雨,所以,拥有一款好的天气预报工具,对于我们大学生来说,还真是挺重要的了。好了,自己动手,丰衣足食,我们来用Python打造一个天气预报的微信机器人吧。
02 效果展示
后台登录
image
收到天气预报消息:
image
03 环境配置
Python版本:3.6.0
系统平台:Windows 10 X64
相关模块:
json模块;
requests模块;
itchat模块;
以及一些Python自带的模块。
04 获取天气
主要原理很简单,找一个天气的API接口(这里我们使用的是http://api.map.baidu.com/telematics/v3/weather?location=%s&output=json&ak=TueGDhCvwI6fOrQnLM0qmXxY9N0OkOiQ&callback=?
),使用requests发起请求,接受返回的结果,用python中内置的包json. 将json字符串转换为python的字典或列表,然后从字典中取出数据。
具体可以看代码:
1 city = input('请输入要查询的城市名称:')
2
3 url = 'http://api.map.baidu.com/telematics/v3/weather?location=%s&output=json&ak=TueGDhCvwI6fOrQnLM0qmXxY9N0OkOiQ&callback=?'%city
4 # 使用requests发起请求,接受返回的结果
5 rs = requests.get(url)
6 # 使用loads函数,将json字符串转换为python的字典或列表
7 rs_dict = json.loads(rs.text)
8 # 取出error
9 error_code = rs_dict['error']
10 # 如果取出的error为0,表示数据正常,否则没有查询到结果
11 if error_code == 0:
12 # 从字典中取出数据
13 results = rs_dict['results']
14 # 根据索引取出天气信息字典
15 info_dict = results[0]
16 # 根据字典的key,取出城市名称
17 city_name = info_dict['currentCity']
18 # 取出pm值
19 pm25 = info_dict['pm25']
20 print('当前城市:%s pm值:%s'%(city_name,pm25))
21 # 取出天气信息列表
22 weather_data = info_dict['weather_data']
23 # for循环取出每一天天气的小字典
24 for weather_dict in weather_data:
25 # 取出日期,天气,风级,温度
26 date = weather_dict['date']
27 weather = weather_dict['weather']
28 wind = weather_dict['wind']
29 temperature = weather_dict['temperature']
注释很明了。相信大家都能get it!
05 发送天气预报
在获取到天气预报的数据以后,接下来就是通过itchat模块把信息发送到我们的微信上面了。原理也很简单,先扫码登录我们的微信机器人,然后通过备注名获取要发送的好友,send过去就OK啦。
具体看下面代码:
1 # nickname = input('please input your firends\' nickname : ' )
2 # 想给谁发信息,先查找到这个朋友,name后填微信备注即可
3 # users = itchat.search_friends(name=nickname)
4 users = itchat.search_friends(name='起风了') # 使用备注名来查找实际用户名
5 # 获取好友全部信息,返回一个列表,列表内是一个字典
6 print(users)
7 # 获取`UserName`,用于发送消息
8 userName = users[0]['UserName']
9 itchat.send(date+weather+wind+temperature, toUserName=userName)
说说怎么实现每天定时预报:
可以在程序加个while(True),然后每天定时获取天气,send过去。当然,你最好有一天云主机,把程序挂在主机上面就OK。
另一种实用的思路是:
收取消息关键字,然后回复天气。这个给大家思考实现啦。
06 完整代码
欲获取代码,请关注我们的微信公众号【程序猿声】,在后台回复:pycode04。即可获取。
微信公众号
推荐文章:10分钟教你用Python做个打飞机小游戏超详细教程
推荐文章:10分钟教你用python下载和拼接微信好友头像图片
10分钟教你用Python打造微信天气预报机器人的更多相关文章
- 【python】10分钟教你用python打造贪吃蛇超详细教程
10分钟教你用python打造贪吃蛇超详细教程 在家闲着没妹子约, 刚好最近又学了一下python,听说pygame挺好玩的.今天就在家研究一下, 弄了个贪吃蛇出来.希望大家喜欢. 先看程序效果: 0 ...
- 10分钟教你用Python打造天气机器人+关键字自动回复+定时发送
01 前言 Hello,各位小伙伴.自上次我们介绍了Python实现天气预报的功能以后,那个小程序还有诸多不完善的地方,今天,我们再次来完善一下我们的小程序.比如我们想给机器人发“天气”等关键字,它就 ...
- 10分钟教你用Python实现微信自动回复
01 前言&&效果展示 相信大家都有忙碌的时候,不可能一直守在微信上及时回复消息.但微信又不能像QQ一样设置自动回复.无妨,今天,我们就来用Python实现微信的自动回复功能吧,并且把 ...
- “猜你喜欢”的背后揭秘--10分钟教你用Python打造推荐系统
欲直接下载代码文件,关注我们的公众号哦!查看历史消息即可! 话说,最近的瓜实在有点多,从我科校友李雨桐怒锤某男.陈羽凡吸毒被捕.蒋劲夫家暴的三连瓜,到不知知网翟博士,再到邓紫棋解约蜂鸟.王思聪花千芳隔 ...
- 【python】10分钟教你用python下载和拼接微信好友头像图片
前言 相信微信大家是用得再多也不过了.那么,对于python+微信,又能玩出什么新的花样呢?下面小编就给大家带来一个好玩的东西.用python下载所有的微信好友的头像,然后拼接成一张大图.这样,大家就 ...
- 10分钟教你用Python玩转微信之好友性别比例统计分析
01 前言+效果展示 想必,微信对于大家来说,是再熟悉不过的了.那么,大家想不想探索一下微信上的各种奥秘呢?今天,我们一起来简单分析一下微信上的好友性别比例吧~废话不多说,开始干活. 结果如下: 02 ...
- 10分钟教你用Python玩转微信之抓取好友个性签名制作词云
01 前言+展示 各位小伙伴我又来啦.今天带大家玩点好玩的东西,用Python抓取我们的微信好友个性签名,然后制作词云.怎样,有趣吧~好了,下面开始干活.我知道你们还是想先看看效果的. 后台登录: 词 ...
- 【python】10分钟教你用python如何正确把妹
前言 今天没妹子约,刚好研究一下.如何用神奇的python打造一个把妹神器吧.看完这个,你们就能走向人生巅峰,迎娶白富美啦. 我知道你们想看看效果 image 当然啦,这只是测试版的效果,真正的版本可 ...
- 【python】10分钟教你用python一行代码搞点大新闻
准备 相信各位对python的语言简洁已经深有领会了.那么,今天就带大家一探究竟.看看一行python代码究竟能干些什么大新闻.赶紧抄起手中的家伙,跟我来试试吧. 首先你得先在命令行进入python. ...
随机推荐
- MYSQL 存储过程通用
返回随机时间 函数 )) ) CHARSET utf8 BEGIN )); -- 随机天数 60天以内随机天数 )); -- 随机小时 ));-- 随机分 ));-- 随机秒 ); IF type = ...
- oepnni安装
sudo apt-get install libopenni-dev libopenni2-dev / apt-get install libqhull-dev
- MySQL中触发器
触发器是与某个事件相关的特殊存储过程,与存储过程不同的是,存储过程需要用 call 调用而出发器不需要使用call调用调用. 也就是自己预先定义好了,当某个事件发生时,就会自动出发触发器进行相关的操作 ...
- stl源码分析de练习
// StlTest1.cpp : 定义控制台应用程序的入口点. // #include "stdafx.h" #include <vector> #include & ...
- openssl详解
openssl详解 摘自:https://blog.csdn.net/liguangxianbin/article/details/79665100 目录 目录 第一章 前言 第二章 证书 第三章 加 ...
- Levenshtein计算相似度距离
使用Levenshtein计算相似度距离,装下模块,调用下函数就好. 拿idf还得自己去算权重,而且不一定准确度高,一般做idf还得做词性归一化,把动词形容词什么全部转成名词,很麻烦. Levensh ...
- CodeForces 686B Little Robber Girl's Zoo (构造冒泡排序)
题意:给定一排列,让你通过一个区间交换的方式,完成排序. 析:这个题说了,最多不能超过20000次,而 n 最大才100,那么冒泡排序复杂度为 n * n,才10000,肯定是可以的,所以我们就模拟冒 ...
- 移动lob类型索引到指定表空间
WWWNEWSAD 为表名 USERS 为原表空间 CONTENT 为lob类型的字段 DATA_INDEX_WXZJ 指定的表空间 ALTER TABLE WWWNEWSAD MOVE TABLES ...
- HBase的FlushLargeStoresPolicy多例族支持
众所周知,HBase的一个例族flush时,会导致所有例族都跟着被flush.在HBase-0.94的官方说明(http://hbase.apache.org/0.94/book/number.of. ...
- Freedom DownTime
Storyline Computer hackers are being portrayed as the newest brand of terrorists. This is a story of ...