如何利用python给微信公众号发消息实例代码

 更新时间:2022年03月28日 10:37:36   作者:felix_yujing  
使用过微信公众号的小伙伴应该知道微信公众号有时候会给你推一些文章,当你选择它的某个功能时,它还会返回一些信息,下面这篇文章主要给大家介绍了关于如何利用python给微信公众号发消息的相关资料,需要的朋友可以参考下

现在通过发微信公众号信息来做消息通知和告警已经很普遍了。最常见的就是运维通过zabbix调用shell脚本给微信发消息,起到告警的作用。当要发送的信息较多,而且希望按照指定格式显示的好看一点的时候,shell处理起来,个人感觉不太方便。于是我用python重写了发微信的功能。

#coding:utf-8
import urllib2
import json
import sys

def getMsg():
    #为了避免发送中文消息报错,使用utf8方式编码
    reload(sys)
    sys.setdefaultencoding('utf8')
    #这个方法生成想要发送的消息
    msg = '''
要发送的消息1
要发送的消息2
要发送的消息3
...
'''
    return msg

if __name__ == '__main__':
    #微信公众号上应用的CropID和Secret
    CropID='xxxxxxxxxxxxxxxxxx'
    Secret='xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'

    #获取access_token
    GURL="https://qyapi.weixin.qq.com/cgi-bin/gettoken?corpid=%s&corpsecret=%s" % (CropID,Secret)
    result=urllib2.urlopen(urllib2.Request(GURL)).read()
    dict_result = json.loads(result)
    Gtoken=dict_result['access_token']

    #生成通过post请求发送消息的url
    PURL="https://qyapi.weixin.qq.com/cgi-bin/message/send?access_token=%s" % Gtoken

    #企业号中的应用id
    AppID=1
    #部门成员id,微信接收者
    UserID=1
    #部门id,定义可接收消息的成员范围
    PartyID=1

    #生成post请求信息
    post_data = {}
    msg_content = {}
    msg_content['content'] = getMsg()
    post_data['touser'] = UserID
    post_data['toparty'] = PartyID
    post_data['msgtype'] = 'text'
    post_data['agentid'] = AppID
    post_data['text'] = msg_content
    post_data['safe'] = '0'
    #由于字典格式不能被识别,需要转换成json然后在作post请求
    #注:如果要发送的消息内容有中文的话,第三个参数一定要设为False
    json_post_data = json.dumps(post_data,False,False)

    #通过urllib2.urlopen()方法发送post请求
    request_post = urllib2.urlopen(PURL, json_post_data)
    #read()方法查看请求的返回结果
    print request_post.read()

追加:企业公众号]升级到[企业微信]之后发送消息失败

最近,看到消息,说是微信把企业公众号升级到企业微信。当时并没有在意,但是后来发现之前用企业公众号的接口来发通知消息的程序发不出去消息了。

于是,我又打开升级消息,仔细的读了一下:企业号将迁移至企业微信管理后台(work.weixin.qq.com/login)进行统一管理。之前企业公众号的管理后台地址是qy.weixin.qq.com,发不了消息难道是接口地址也变了吗。

登到新后台看了下,发现应用的Secret值变了,相比之前位数要少一些。将代码中的Secret值替换成新的之后,发现还是不行。debug看了下,在用post请求调用接口发消息的时候报错:{“errcode”:-1,”errmsg”:”Invalid input”}。分析原因可能有两个:调用的发消息接口地址不对了;或者,传的post参数的格式不对了。

还好,在其官网上找到了企业微信的API说明文档:https://work.weixin.qq.com/api/doc ,上面有较详细的使用说明。经确认,调用接口的url地址并没有变(发送消息还是用https://qyapi.weixin.qq.com/cgi-bin/message/send?access_token=ACCESS_TOKEN)。但是发现文本消息的格式有点不一样,官网示例如下:

    {
       "touser" : "UserID1|UserID2|UserID3",
       "toparty" : " PartyID1|PartyID2 ",
       "totag" : " TagID1 | TagID2 ",
       "msgtype" : "text",
       "agentid" : 1,
       "text" : {
           "content" : "你的快递已到,请携带工卡前往邮件中心领取。\n出发前可查看<a href=\"http://work.weixin.qq.com\">邮件中心视频实况</a>,聪明避开排队。"
       }
    }

上面的UserID、PartyID这些应该我之前都是当数值传的,但示例上是放在引号里面的,那就是被当做字符串了。于是,我把代码也改成按字符串的方式试了下,结果可以了。。。

总结

到此这篇关于如何利用python给微信公众号发消息的文章就介绍到这了,更多相关python给微信公众号发消息内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 详解python中的 is 操作符

    详解python中的 is 操作符

    is 操作符是Python语言的一个内建的操作符。它的作用在于比较两个变量是否指向了同一个对象。下面通过本文给大家详细介绍python中的 is 操作符,需要的朋友参考下吧
    2017-12-12
  • Python+PyQt5实现数据库表格动态增删改

    Python+PyQt5实现数据库表格动态增删改

    这篇文章主要为大家介绍如何利用Python中的PyQt5模块实现对数据库表格的动态增删改,文中的示例代码讲解详细,感兴趣的小伙伴可以了解一下
    2022-03-03
  • Python代码注释规范代码实例解析

    Python代码注释规范代码实例解析

    这篇文章主要介绍了Python代码注释规范代码实例解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-08-08
  • OpenCV学习方框滤波实现图像处理代码示例

    OpenCV学习方框滤波实现图像处理代码示例

    这篇文章主要为大家介绍了OpenCV学习如何使用方框滤波实现对图像处理代码示例,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步
    2021-10-10
  • Python中类的mro与继承关系详解(二)

    Python中类的mro与继承关系详解(二)

    这篇文章主要介绍了Python中类的mro与继承关系详解,上一篇我们已经通过mro相关资料介绍了mro继承关系的基础内容,这片紧接着上一篇文章展开详细内容,需要的朋友可以参考一下
    2022-07-07
  • 使用Python编写一个桌面便签应用

    使用Python编写一个桌面便签应用

    ChatGPT的编程能力也不差,本文将一步一步提出要求,让ChatGPT根据我们的要求,编写出一个可用的,可打包运行的桌面便签,感兴趣的可以了解一下
    2023-06-06
  • python实现随机梯度下降法

    python实现随机梯度下降法

    这篇文章主要为大家详细介绍了python实现随机梯度下降法,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-08-08
  • Window10下python3.7 安装与卸载教程图解

    Window10下python3.7 安装与卸载教程图解

    本文通过图文并茂的形式给大家介绍了WINDOW10下PYTHON3.7 安装与卸载,非常不错,具有一定的参考借鉴价值,需要的朋友可以参考下
    2019-09-09
  • Pycharm关闭控制台多余窗口的解决办法

    Pycharm关闭控制台多余窗口的解决办法

    这篇文章主要介绍了Pycharm关闭控制台多余窗口的解决办法,文中通过图文结合的方式讲解的非常详细,对大家的学习或工作有一定的帮助,需要的朋友可以参考下
    2024-12-12
  • Python爬虫常用小技巧之设置代理IP

    Python爬虫常用小技巧之设置代理IP

    这篇文章主要给大家介绍了关于Python爬虫常用小技巧之设置代理IP的相关资料,文中通过示例代码介绍的非常详细,对大家学习或者使用python具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2018-09-09

最新评论