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调用命令行进度条的方法
May 05 Python
Python实现完整的事务操作示例
Jun 20 Python
Python Pexpect库的简单使用方法
Jan 29 Python
django项目用higcharts统计最近七天文章点击量
Aug 17 Python
解决Pytorch 训练与测试时爆显存(out of memory)的问题
Aug 20 Python
PHP统计代码行数的小代码
Sep 19 Python
python获取栅格点和面值的实现
Mar 10 Python
opencv 查找连通区域 最大面积实例
Jun 04 Python
openCV提取图像中的矩形区域
Jul 21 Python
scrapy与selenium结合爬取数据(爬取动态网站)的示例代码
Sep 28 Python
Python+OpenCV图像处理——图像二值化的实现
Oct 24 Python
python爬虫框架feapde的使用简介
Apr 20 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的面试题集,附我的答案和分析(一)
2006/11/19 PHP
phpMyAdmin下载、安装和使用入门教程
2007/05/31 PHP
php更改目录及子目录下所有的文件后缀的代码
2010/09/24 PHP
浅析echo(),print(),print_r(),return之间的区别
2013/11/27 PHP
PHP使用xmllint命令处理xml与html的方法
2014/12/15 PHP
总结PHP内存释放以及垃圾回收
2018/03/29 PHP
javascript之typeof、instanceof操作符使用探讨
2013/05/19 Javascript
jquery触发a标签跳转事件示例代码
2013/07/21 Javascript
JS实现的3D拖拽翻页效果代码
2015/10/31 Javascript
node模块机制与异步处理详解
2016/03/13 Javascript
jQuery使用DataTable实现删除数据后重新加载功能
2017/02/27 Javascript
vue2.0 keep-alive最佳实践
2017/07/06 Javascript
vue开发环境配置跨域的方法步骤
2019/01/16 Javascript
vue项目打包之后背景样式丢失的解决方案
2019/01/17 Javascript
nodejs微信开发之接入指南
2019/03/17 NodeJs
js prototype深入理解及应用实例分析
2019/11/25 Javascript
[01:10:49]Secret vs VGJ.S 2018国际邀请赛淘汰赛BO3 第二场 8.24
2018/08/25 DOTA
python3下使用cv2.imwrite存储带有中文路径图片的方法
2018/05/10 Python
对python pandas 画移动平均线的方法详解
2018/11/28 Python
python PrettyTable模块的安装与简单应用
2019/01/11 Python
详解python和matlab的优势与区别
2019/06/28 Python
python针对mysql数据库的连接、查询、更新、删除操作示例
2019/09/11 Python
python实现输入的数据在地图上生成热力图效果
2019/12/06 Python
Python namedtuple命名元组实现过程解析
2020/01/08 Python
python集成开发环境配置(pycharm)
2020/02/14 Python
详解如何使用Pytest进行自动化测试
2021/01/14 Python
Python 图片处理库exifread详解
2021/02/25 Python
HTML5新表单元素_动力节点Java学院整理
2017/07/12 HTML / CSS
家得宝加拿大家装网上商店:The Home Depot加拿大
2016/08/27 全球购物
Java基础面试题
2012/11/02 面试题
电气专业推荐信范文
2013/11/18 职场文书
校长岗位职责
2013/11/26 职场文书
学习心得体会
2014/01/01 职场文书
八年级英语教学反思
2016/02/15 职场文书
python中opencv实现图片文本倾斜校正
2021/06/11 Python
浅谈Python中的正则表达式
2021/06/28 Python