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使用在线API查询IP对应的地理位置信息实例
Jun 01 Python
python根据出生年份简单计算生肖的方法
Mar 27 Python
解析Python中while true的使用
Oct 13 Python
解读Python编程中的命名空间与作用域
Oct 16 Python
python下载图片实现方法(超简单)
Jul 21 Python
python如何使用unittest测试接口
Apr 04 Python
Python中asyncio模块的深入讲解
Jun 10 Python
利用python开发app实战的方法
Jul 09 Python
Python : turtle色彩控制实例详解
Jan 19 Python
Python3 pickle对象串行化代码实例解析
Mar 23 Python
keras model.fit 解决validation_spilt=num 的问题
Jun 19 Python
Python虚拟环境virtualenv创建及使用过程图解
Dec 08 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
MySQL相关说明
2007/01/15 PHP
php中$_POST与php://input的区别实例分析
2015/01/07 PHP
php实现paypal 授权登录
2015/05/28 PHP
ThinkPHP实现生成和校验验证码功能
2017/04/28 PHP
php简单检测404页面的方法示例
2019/08/23 PHP
ThinkPHP 5.x远程命令执行漏洞复现
2019/09/23 PHP
Laravel统计一段时间间隔的数据方法
2019/10/09 PHP
解决windows上php xdebug 无法调试的问题
2020/02/19 PHP
Javascript 学习书 推荐
2009/06/13 Javascript
js 中 document.createEvent的用法
2010/08/29 Javascript
jqTransform form表单美化插件使用方法
2012/07/05 Javascript
js获取当前日期代码适用于网页头部
2013/06/27 Javascript
JQuery中DOM加载与事件执行实例分析
2015/06/13 Javascript
BootStrap下jQuery自动完成的样式调整
2016/05/30 Javascript
jquery实现网站列表切换效果的2种方法
2016/08/12 Javascript
文件上传的几个示例分享【推荐】
2016/12/16 Javascript
详解微信小程序开发—你期待的分享功能来了,微信小程序序新增5大功能
2016/12/23 Javascript
jQuery简单绑定单个事件的方法示例
2017/06/10 jQuery
利用JavaScript对中文(汉字)进行排序实例详解
2017/06/18 Javascript
Webpack 服务器端代码打包的示例代码
2017/09/19 Javascript
微信小程序实现YDUI的ScrollTab组件
2018/02/02 Javascript
vue 配置多页面应用的示例代码
2018/10/22 Javascript
vue学习笔记之slot插槽用法实例分析
2020/02/29 Javascript
用Python中的__slots__缓存资源以节省内存开销的方法
2015/04/02 Python
Python抓取手机号归属地信息示例代码
2016/11/28 Python
Python3列表内置方法大全及示例代码小结
2019/05/10 Python
Python 实现日志同时输出到屏幕和文件
2020/02/19 Python
基于Python组装jmx并调用JMeter实现压力测试
2020/11/03 Python
HTML5标签使用方法详解
2015/11/27 HTML / CSS
Melijoe英国官网:法国儿童时尚网站
2016/11/18 全球购物
Fanatics英国官网:美国体育电商
2018/11/06 全球购物
部队党性分析材料
2014/02/16 职场文书
教师评语大全
2014/04/28 职场文书
2014年班组工作总结
2014/11/20 职场文书
老干部座谈会主持词
2015/07/03 职场文书
2016年情人节问候语
2015/11/11 职场文书