python实现给微信公众号发送消息的方法


Posted in Python onJune 30, 2017

本文实例讲述了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()

注意:

2017年6月初开始,微信企业公众号迁移到企业微信,发送消息有一些调整,请参考前文《[企业公众号]升级到[企业微信]之后发送消息失败的解决方法》

希望本文所述对大家Python程序设计有所帮助。

Python 相关文章推荐
Python计算一个文件里字数的方法
Jun 15 Python
你所不知道的Python奇技淫巧13招【实用】
Dec 14 Python
Python利用turtle库绘制彩虹代码示例
Dec 20 Python
详解用Python处理HTML转义字符的5种方式
Dec 27 Python
python爬取个性签名的方法
Jun 17 Python
Python实现压缩文件夹与解压缩zip文件的方法
Sep 01 Python
Django项目使用CircleCI的方法示例
Jul 14 Python
Django 数据库同步操作技巧详解
Jul 19 Python
python使用minimax算法实现五子棋
Jul 29 Python
python实现KNN分类算法
Oct 16 Python
Python新手如何进行闭包时绑定变量操作
May 29 Python
Python+Matplotlib+LaTeX玩转数学公式
Feb 24 Python
Python信息抽取之乱码解决办法
Jun 29 #Python
python urllib urlopen()对象方法/代理的补充说明
Jun 29 #Python
python笔记:mysql、redis操作方法
Jun 28 #Python
老生常谈Python序列化和反序列化
Jun 28 #Python
python flask实现分页效果
Jun 27 #Python
Django自定义分页效果
Jun 27 #Python
Python读取和处理文件后缀为.sqlite的数据文件(实例讲解)
Jun 27 #Python
You might like
php数组使用规则分析
2015/02/27 PHP
javascript中对对层的控制
2006/12/29 Javascript
如何快速的呈现我们的网页的技巧整理
2007/07/01 Javascript
用显卡加速,轻松把笔记本打造成取暖器的办法!
2013/04/17 Javascript
smartcrop.js智能图片裁剪库
2015/10/14 Javascript
JS代码随机生成姓名、手机号、身份证号、银行卡号
2016/04/27 Javascript
Javascript将数字转化成为货币格式字符串
2016/06/22 Javascript
jQuery插件ajaxFileUpload使用详解
2017/01/10 Javascript
使用JavaScript实现表格编辑器(实例讲解)
2017/08/02 Javascript
Vue2.0实现调用摄像头进行拍照功能 exif.js实现图片上传功能
2018/04/28 Javascript
JavaScript中发出HTTP请求最常用的方法
2018/07/12 Javascript
javascript中的数据类型检测方法详解
2019/08/07 Javascript
微信小程序开发之map地图组件定位并手动修改位置偏差
2019/08/17 Javascript
基于vue-cli3+typescript的tsx开发模板搭建过程分享
2020/02/28 Javascript
JavaScript定时器使用方法详解
2020/03/26 Javascript
24个ES6方法解决JS实际开发问题(小结)
2020/05/31 Javascript
利用vue3+ts实现管理后台(增删改查)
2020/10/30 Javascript
Python+Django在windows下的开发环境配置图解
2009/11/11 Python
Python中的左斜杠、右斜杠(正斜杠和反斜杠)
2016/08/30 Python
pandas的唯一值、值计数以及成员资格的示例
2018/07/25 Python
python用列表生成式写嵌套循环的方法
2018/11/08 Python
pygame编写音乐播放器的实现代码示例
2019/11/19 Python
浅谈python的elementtree模块处理中文注意事项
2020/03/06 Python
在Ubuntu 20.04中安装Pycharm 2020.1的图文教程
2020/04/30 Python
Python Tornado核心及相关原理详解
2020/06/24 Python
python 获取计算机的网卡信息
2021/02/18 Python
美国祛痘、抗衰老药妆品牌:Murad
2016/08/27 全球购物
澳大利亚儿童和婴儿产品在线商店:Lime Tree Kids
2017/10/05 全球购物
求∏的近似值,直到最后一项的绝对值小于指定的数
2016/02/12 面试题
大学生创业计划书的用途
2014/01/08 职场文书
胡雪岩故居导游词
2015/02/06 职场文书
工作表现证明
2015/06/15 职场文书
代码解析React中setState同步和异步问题
2021/06/03 Javascript
Java新手教程之ArrayList的基本使用
2021/06/20 Java/Android
php双向队列实例讲解
2021/11/17 PHP
Spring Boot 底层原理基础深度解析
2022/04/03 Java/Android