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 MySQLdb Windows下安装教程及问题解决方法
May 09 Python
Python实现多并发访问网站功能示例
Jun 19 Python
Python实现读取json文件到excel表
Nov 18 Python
django2 快速安装指南分享
Jan 05 Python
对python 矩阵转置transpose的实例讲解
Apr 17 Python
python里dict变成list实例方法
Jun 26 Python
django 中QuerySet特性功能详解
Jul 25 Python
Python之数据序列化(json、pickle、shelve)详解
Aug 30 Python
利用4行Python代码监测每一行程序的运行时间和空间消耗
Apr 22 Python
python opencv 实现读取、显示、写入图像的方法
Jun 08 Python
Django框架请求生命周期实现原理
Nov 13 Python
python 爬取京东指定商品评论并进行情感分析
May 27 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学习之整理字符串
2011/04/17 PHP
Zend Framework教程之Zend_Helpers动作助手ViewRenderer用法详解
2016/07/20 PHP
PHP基于Redis消息队列实现发布微博的方法
2017/05/03 PHP
JQuery 1.3.2以上版本中出现pareseerror错误的解决方法
2011/01/11 Javascript
通过Jscript中@cc_on 语句识别IE浏览器及版本的代码
2011/05/07 Javascript
Javascript实现带关闭按钮的网页漂浮广告代码
2014/01/12 Javascript
jQuery实现指定内容滚动同时左侧或其它地方不滚动的方法
2015/08/08 Javascript
jQuery实现带玻璃流光质感的手风琴特效
2015/11/20 Javascript
如何用angularjs制作一个完整的表格
2016/01/21 Javascript
JS随机打乱数组的方法小结
2016/06/22 Javascript
HTML中setCapture、releaseCapture 使用方法浅析
2016/09/25 Javascript
浅谈Angular4中常用管道
2017/09/27 Javascript
JS实现的数组去除重复数据算法小结
2017/11/17 Javascript
详解如何在angular2中获取节点
2017/11/23 Javascript
JS从非数组对象转数组的方法小结
2018/03/26 Javascript
vue中接口域名配置为全局变量的实现方法
2018/09/20 Javascript
vue2.x数组劫持原理的实现
2020/04/19 Javascript
[00:32]2018DOTA2亚洲邀请赛出场——LGD
2018/04/04 DOTA
一个基于flask的web应用诞生 用户注册功能开发(5)
2017/04/11 Python
Python实现PS滤镜特效之扇形变换效果示例
2018/01/26 Python
程序员写Python时的5个坏习惯,你有几条?
2018/11/26 Python
Python实现FTP文件传输的实例
2019/07/07 Python
Python学习之路安装pycharm的教程详解
2020/06/17 Python
业务经理的岗位职责
2013/11/16 职场文书
体育专业学生自我评价范文
2014/01/17 职场文书
高中军训感想800字
2014/02/23 职场文书
cf收人广告词
2014/03/14 职场文书
社区健康教育实施方案
2014/03/18 职场文书
个人借款担保书
2014/04/02 职场文书
应聘销售主管的求职信
2014/04/26 职场文书
建筑安全生产责任书
2014/07/22 职场文书
高中生第一学年自我鉴定
2014/09/12 职场文书
Redis如何一键部署脚本
2021/04/12 Redis
python基础之匿名函数详解
2021/04/21 Python
MySQL8.0的WITH查询详情
2021/08/30 MySQL
pd.DataFrame中的几种索引变换的实现
2022/06/16 Python