返回顶部
首页 > 资讯 > 后端开发 > Python >用python自制微信机器人,定时发送天
  • 257
分享到

用python自制微信机器人,定时发送天

机器人python 2023-01-31 00:01:38 257人浏览 独家记忆

Python 官方文档:入门教程 => 点击学习

摘要

前段时间找到了一个免费的天气预报api,费了好段时间把这个API解析并组装成自己想用的格式了,就想着如何实现每天发送天气信息给自己。最近无意中发现了wxpy库,用它来做再合适不过了。以下是wxpy库的简介: wxpy基于itchat,

微信自动回复

前段时间找到了一个免费的天气预报api,费了好段时间把这个API解析并组装成自己想用的格式了,就想着如何实现每天发送天气信息给自己。最近无意中发现了wxpy库,用它来做再合适不过了。以下是wxpy库的简介:

wxpy基于itchat,使用了 WEB 微信的通讯协议,通过大量接口优化提升了模块的易用性,并进行丰富的功能扩展。实现了微信登录、收发消息、搜索好友、数据统计、微信公众号、微信好友、微信群基本信息获取等功能。

废话不多说,代码写起来。

操作系统windows / linux

python版本:3.7.2

我们要实现用Python来发微信,发送的内容是每天最新的天气信息。很明显我们需要完成两部分的准备,先来看看获取天气信息这部分内容。

2.0 准备工作

本文我们用到的第三方库有requests、wxpyy,若环境还没有,按如下方式进行安装即可。

pip install wxpy
pip install requests

2.1 获取天气信息

这里我使用的API的请求链接如下:

Http://t.weather.soJSON.com/api/weather/city/city_code

请求方式是GET方法,使用时注意更换为自己城市对应的city_code,除此之外不用带任何参数。

请求是restfull风格,city_code为9位数字,如下示例:

{
  "_id": 58,
  "id": 59,
  "pid": 3,
  "city_code": "101230201",
  "city_name": "厦门"
}

大家可以从_city.json文件中获取各个城市对应的编号。该文件我已经放在GitHub本文章对应的目录下了,大家可自行查询使用。

# weather API的URL,此处的城市编号,参看_city.json
url = 'http://t.weather.sojson.com/api/weather/city/101010200'
header = {
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (Khtml, like Gecko) Chrome/73.0.3683.75 Safari/537.36'
}

# 请求Weather API并拿到服务器返回的数据
rep = requests.get(url, headers = header)
rep.encoding = "utf-8"
result = ''
weather = rep.tex

这个API接口的返回值内容很多,以下仅展示返回的部分信息。实际使用中仅用到三块内容,首先是城市信息。

"cityInfo": {
    "city": "海淀区", //请求城市
    "cityId": "101010200", //城市ID
    "parent": "北京市", //上级,一般是省份
    "updateTime": "09:02" //天气更新时间
}

其次是,该城市当前天气的空气相关指数。

"data": {
    "shidu": "32%", //湿度
    "pm25": 35.0, //pm2.5
    "pm10": 97.0, //pm10
    "quality": "良", //空气质量
    "wendu": "7", //温度
    "ganmao": "极少数敏感人群应减少户外活动", //感冒提醒(指数)
}

第三部分,该城市当前天气的温度风力等另外一些指数。

"forecast": [ //今天+未来14天
    {
        "date": "16", //日期
        "sunrise": "06: 28",
        "high": "高温 20.0℃",
        "low": "低温 2.0℃",
        "sunset": "18: 21",
        "aqi": 48.0, 
        "ymd": "2019-03-16", //年月日
        "week": "星期六",
        "fx": "西北风", //风向
        "fl": "3-4级", //风力
        "type": "晴",
        "notice": "愿你拥有比阳光明媚的心情"
    }
]

注:这个API接口返回值完整的示例,请见github中本文章目录下的weather.json文件。

拿到返回值之后,需要解析,并转换组装成我们想要的格式。

# 解析服务器返回的数据,具体可参考weather.json文件
index_cityInfo = weather.find("cityInfo")
index_cityId = weather.find("cityId")
index_shidu = weather.find("shidu")
index_pm25 = weather.find("pm25")
index_pm10 = weather.find("pm10")
index_quality = weather.find("quality")
index_wendu = weather.find("wendu")
index_ganmao = weather.find("ganmao")
index_forecast = weather.find("forecast")
index_ymd = weather.find("ymd", index_forecast)
index_week = weather.find("week", index_forecast)
index_sunset = weather.find("sunset", index_forecast)
index_high = weather.find("high", index_forecast)
index_low = weather.find("low", index_forecast)
index_fx = weather.find("fx", index_forecast)
index_fl = weather.find("fl", index_forecast)
index_aqi = weather.find("aqi", index_forecast)
index_type = weather.find("type", index_forecast)
index_notice = weather.find("notice", index_forecast)

这是我最终想达到的效果如下:

# 今日天气预报
# 年月日 + 星期 + 所在地城市
# 天气类型 + 风向 + 风力
# 温度范围(最低温度~最高温度)
# 污染指数:PM2.5/PM10/AQI
# 空气质量
# 当前温度 + 空气湿度
# Notice信息

转换化具体代码就是这样子的:

result = '今日天气预报' + '\n' \
    + weather[index_ymd + 6:index_week - 3] + " " \
    + weather[index_week + 7:index_fx - 3] + " " \
    + weather[index_cityInfo + 19:index_cityId - 3] + '\n' \
    + "天气: " + weather[index_type + 7:index_notice - 3] + " " \
    + weather[index_fx + 5:index_fl - 3] \
    + weather[index_fl + 5:index_type - 3] + '\n' \
    + "温度范围:" + weather[index_low + 9:index_sunset - 3] + " ~" \
    + weather[index_high + 10:index_low - 3] + '\n' \
    + "污染指数: PM2.5:" + weather[index_pm25 + 6:index_pm10 - 1] + "" \
    + "PM10:" + weather[index_pm10 + 6:index_quality - 1] + " " \
    + "AQI:" + weather[index_aqi + 5:index_ymd - 2] + '\n' \
    + "空气质量:" + weather[index_quality + 10:index_wendu - 3] + '\n' \
    + "当前温度:" + weather[index_wendu + 8:index_ganmao - 3] + " " \
    + "空气湿度:" + weather[index_shidu + 8:index_pm25 - 3] + '\n' \
    + weather[index_notice + 9:weather.find('}', index_notice) - 1]

这样我们的第一步,获取天气信息就完成了。接下来就是登录微信定时发送消息了。

2.2 登录微信定时发送消息

首先要登录微信,一行代码就搞定了。这里实际上是扫二维码登录了一个Web版的微信。

# 初始化机器人,扫码登陆微信,适用于Windows系统
bot = Bot()

# Linux系统,执行登陆请调用下面的这句
bot = Bot(console_qr=2, cache_path="botoo.pkl")

然后我们需要定义一个发送消息的函数,将获取并解析好的天气信息发送给指定微信好友。

# 调用get_weather函数
GW = get_weather()
# 填入你朋友的微信昵称,注意这里不是备注,也不是微信帐号
my_friend = bot.friends().search(u'一个昵称')[0]
# 发送微信消息
my_friend.send(u"早上好Y(^o^)Y,这里是今日份的天气信息请查收!")
my_friend.send(GW) 
my_friend.send(u"Have a Nice Day!")

# 每隔86400秒(1天),发送1次
t = Timer(86400, auto_send)
t.start()

接下来,你可以使用try...except...语句来实现在消息失败时发出告警:

try:
    '''此处为发送消息的代码,即上一段内容'''
except:
    # 你的微信昵称,注意这里不是备注,也不是微信帐号
    my_friend = bot.friends().search('&娴敲棋子&')[0]
    my_friend.send(u"报告老板,今日份的信息发送失败了!")

最后运行主函数,调用发送消息的函数即可。

# 调用函数进行消息发送
auto_send()

这是我清晨收到的微信消息截图,看上去还不错。没白忙活?

在这里插入图片描述

我把这个脚本丢在了我的树莓上,挂在后台一直运行,简直完美。

这里仅是实现一个最简单的定时发送,后续考虑如何实现多个时间点的定时发送,还准备加上早间新闻资讯以及火车放票信息等内容。

关注公众号「Python专栏」,后台回复:zsxq05,获取本文全套代码!

--结束END--

本文标题: 用python自制微信机器人,定时发送天

本文链接: https://lsjlt.com/news/181523.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • 用python自制微信机器人,定时发送天
    前段时间找到了一个免费的天气预报API,费了好段时间把这个API解析并组装成自己想用的格式了,就想着如何实现每天发送天气信息给自己。最近无意中发现了wxpy库,用它来做再合适不过了。以下是wxpy库的简介: wxpy基于itchat,...
    99+
    2023-01-31
    机器人 python
  • Python自制微信机器人:群发消息、自
    运营公众号也有半年了,今年5月份开始的,之前一直用一款windows工具来运营自动接受好友请求、群发文章、自动回复等操作,但颇有不便。 举几个场景: 突然在外面看到一篇文章很好,临时写了一篇,想群发一下。 好友加我微信后,每次都要手动...
    99+
    2023-01-31
    机器人 消息 Python
  • Python|怎么自动定时在微信中发送消息
    这篇文章将为大家详细讲解有关Python|怎么自动定时在微信中发送消息,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。    用Python编程语言,做一个简单的Demo演示如何自动发送...
    99+
    2023-06-06
  • 用Python定时发送天气邮件
    效果如图  一、获取天气 def getWeather1(city): try: appid = os.environ["TIANQI_APPID...
    99+
    2024-04-02
  • 怎么用Python制作自动发送微信的程序
    这篇文章主要介绍“怎么用Python制作自动发送微信的程序”,在日常操作中,相信很多人在怎么用Python制作自动发送微信的程序问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”怎么用Python制作自动发送微信...
    99+
    2023-06-29
  • Python利用itchat模块定时给朋友发送微信信息
    目录功能数据来源实现效果代码说明目录结构核心代码项目运行安装依赖参数配置功能 定时给女朋友发送每日天气、提醒、每日一句。 数据来源 每日一句和上面的大佬一样也是来自ONE&middo...
    99+
    2024-04-02
  • VBS如何调用企业微信机器人发定时消息
    小编给大家分享一下VBS如何调用企业微信机器人发定时消息,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!去年在企业微信群当中突然看到多了一个叫多群机器人的东西:企业微信群机器人以为是升级了什么黑科技,看了下说明,原来目前功能...
    99+
    2023-06-08
  • 怎么用Python定时发送天气邮件
    这篇文章主要介绍“怎么用Python定时发送天气邮件”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“怎么用Python定时发送天气邮件”文章能帮助大家解决问题。效果如图 一、获取天气def&...
    99+
    2023-06-29
  • Python是如何制作微信机器人
    这期内容当中小编将会给大家带来有关Python是如何制作微信机器人,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。一、环境配置大多数人无法登录网页版,所以饶过它模拟电脑登录,这个模块一定记得安装:pip&n...
    99+
    2023-06-22
  • Python中怎么用itchat模块定时给朋友发送微信信息
    这篇文章主要讲解了“Python中怎么用itchat模块定时给朋友发送微信信息”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Python中怎么用itchat模块定时给朋友发送微信信息”吧!功...
    99+
    2023-06-26
  • Python制作微信机器人教程详解
    目录一、环境配置二、登录三、 第一个简单的消息发送监控四、指定某个微信好友发送消息五、所有微信群监控六、公众号监听七、定时发送消息八、微信智能聊天机器人一、环境配置 大多数人无法登录...
    99+
    2024-04-02
  • 详解Python如何制作自动发送微信的程序
    目录前言模块安装和导入pyautoguiapscheduler完整代码结果前言 事情是这样的:今天晚上,女朋友让我十二点催她睡觉。 不过,可是我实在太困了,熬不下去…...
    99+
    2024-04-02
  • 微信公众号推送天气教程,自动定时推送【Java版】开发者和小白详细教程
    GitHub源码链接放这里 建议先打开,因为GitHub在国内加载很慢。 点击打开 Java版本,教程最近一次更新时间为: 2022-11-08 目录: 1.通用准备 2.面向开发者 3.面向小bai 4.联系作者 5.常见问题 通用准备 ...
    99+
    2023-08-17
    微信
  • Python实现飞书机器人定时发送文本、图片等群消息
    工作中会经常遇到监控告警相关问题,监控和告警的目的是要在事中及时发现问题并定位系统问题,那么当系统或平台出现问题了,如何及时暴露这些问题给对应的项目开发人员呢? 本文记录了在Python项目中利...
    99+
    2023-09-06
    python chatgpt
  • 16行Python代码实现微信聊天机器人并自动智能回复功能
    目录一、效果二、项目思路三、代码分析1.安装和导入模块2.申请图灵机器人3.实现机器人功能4.实现微信功能5.弹出二维码及循环程序在我们的生活和工作当中,很多时候我们并不能及时地回复...
    99+
    2024-04-02
  • python定时利用QQ邮件发送天气预报的实例
    大致介绍 好久没有写博客了,正好今天有时间把前几天写的利用python定时发送QQ邮件记录一下 1、首先利用request库去请求数据,天气预报使用的是和风天气的API(www.heweather.com/...
    99+
    2022-06-04
    邮件发送 天气预报 实例
  • 快速实现基于Python的微信聊天机器人示例代码
    最近听说一个很好玩的图灵机器人api,正好可以用它做一个微信聊天机器人,下面是实现 # test.py import requests import itchat #这是一个用于微信回复的库 KE...
    99+
    2022-06-04
    示例 机器人 快速
  • Python 微信自动化工具开发系列01_自动获取微信聊天信息(2023年9月可用)
    前言 一个需求需要利用Python+第三方库wxauto 用于微信上自动获取聊天信息,从而根据自己需求对信息自动进行二次处理,比如自动回复,再比如自动发送文件或者其他。这边使用Python的第三方库`...
    99+
    2023-10-26
    微信 python 微信自动化
  • 用python写一个预警机器人(支持微信
    背景 线上的系统在运行中,发生故障时怎么及时的通过手机通知到相关人员?当然这是个很简单的需求,现有的方法有很多,例如: 如果我们用的云产品,那么一般都会有配套对应的监控预警功能,根据需要配置一下即可,支持短信,邮箱通知。 如果我们已经搭建...
    99+
    2023-01-31
    机器人 python
  • Python如何使用微信接入图灵机器人
    本篇内容主要讲解“Python如何使用微信接入图灵机器人”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Python如何使用微信接入图灵机器人”吧!1.wxpy库介绍wxpy 在 itchat 的...
    99+
    2023-06-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作