美文网首页
10分钟教你用Python打造微信天气预报机器人

10分钟教你用Python打造微信天气预报机器人

作者: 番茄鸡蛋炒饭被抢注啦 | 来源:发表于2018-11-27 22:41 被阅读38次

    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的字典或列表,然后从字典中取出数据。

    具体可以看代码:

        city = input('请输入要查询的城市名称:')
    
        url = 'http://api.map.baidu.com/telematics/v3/weather?location=%s&output=json&ak=TueGDhCvwI6fOrQnLM0qmXxY9N0OkOiQ&callback=?'%city
        # 使用requests发起请求,接受返回的结果
        rs = requests.get(url)
        # 使用loads函数,将json字符串转换为python的字典或列表
        rs_dict = json.loads(rs.text)
        # 取出error
        error_code = rs_dict['error']
        # 如果取出的error为0,表示数据正常,否则没有查询到结果
        if error_code == 0:
            # 从字典中取出数据
            results = rs_dict['results']
            # 根据索引取出天气信息字典
            info_dict = results[0]
            # 根据字典的key,取出城市名称
            city_name = info_dict['currentCity']
            # 取出pm值
            pm25 = info_dict['pm25']
            print('当前城市:%s  pm值:%s'%(city_name,pm25))
            # 取出天气信息列表
            weather_data = info_dict['weather_data']
            # for循环取出每一天天气的小字典
            for weather_dict in weather_data:
                # 取出日期,天气,风级,温度
                date = weather_dict['date']
                weather = weather_dict['weather']
                wind = weather_dict['wind']
                temperature = weather_dict['temperature']
    

    注释很明了。相信大家都能get it!

    05 发送天气预报

    在获取到天气预报的数据以后,接下来就是通过itchat模块把信息发送到我们的微信上面了。原理也很简单,先扫码登录我们的微信机器人,然后通过备注名获取要发送的好友,send过去就OK啦。
    具体看下面代码:

                # nickname = input('please input your firends\' nickname : ' )
                #   想给谁发信息,先查找到这个朋友,name后填微信备注即可
                # users = itchat.search_friends(name=nickname)
                users = itchat.search_friends(name='起风了')  # 使用备注名来查找实际用户名
                # 获取好友全部信息,返回一个列表,列表内是一个字典
                print(users)
                # 获取`UserName`,用于发送消息
                userName = users[0]['UserName']
                itchat.send(date+weather+wind+temperature, toUserName=userName)
    

    说说怎么实现每天定时预报:
    可以在程序加个while(True),然后每天定时获取天气,send过去。当然,你最好有一天云主机,把程序挂在主机上面就OK。

    另一种实用的思路是:
    收取消息关键字,然后回复天气。这个给大家思考实现啦。

    06 完整代码

    欲获取代码,请关注我们的微信公众号【程序猿声】,在后台回复:pycode04。即可获取。

    微信公众号

    推荐文章:10分钟教你用Python做个打飞机小游戏超详细教程
    推荐文章:10分钟教你用python下载和拼接微信好友头像图片

    相关文章

      网友评论

          本文标题:10分钟教你用Python打造微信天气预报机器人

          本文链接:https://www.haomeiwen.com/subject/aqcoqqtx.html