实现目的
每天定时抓取web端个小程序端数据,退送wx指定人/群或者邮件。本次通过邮件和wx,推送数据到邮箱或wx指定人
实现代码
代码语言:javascript复制#coding:UTF-8
"""
--------------------------------------
File Name:Get_data_put_wx.py
Author : xzhong
Date:2020-09-08 12:23
E-mail: 3227456102@qq.com
--------------------------------------
"""
import requests
import json
import datetime
from wxpy import *
import itchat
from threading import Timer
def get_token():
"""获取token值"""
url = "https://xxxxxxxxxx/xxx/xxxx"
header = {"OpenPlatformAuth":"xxxxxtor"}
try:
result = requests.post(url=url, headers=header)
token = result.json()['data']['token']
# print(token)
return token
except:
print("获取token失败")
def get_data():
"""查询并获取统计数据"""
now_time = datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S')
url = 'https://xxxxx/xx/xxxx/ryinfoStatistic'
data = {
"type":0,
"startDate":"2020-02-12 00:00:00",
# "endDate":"2020-09-10 23:59:59"
"endDate": now_time
}
headers = {
"User-Agent": "Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.130 Safari/537.36",
"wmRequest": "1",
"Content-Type": "application/json",
"Authorization": get_token()
}
try:
req = requests.post(url=url, data=json.dumps(data), headers=headers)
lsit_data = req.json()['data'] # 获取data列表
data = lsit_data[0]
allResultCount = data.get('allResultCount') # 取数据
replyResultCount = data.get('replyResultCount')
return ("群众问诊咨询人次为: %s" % allResultCount), ("有效回应人次为: %s" % replyResultCount)
except:
print("获取统计数据失败!")
# def send_semail():
# """推送到邮件"""
# import yagmail
# args = {
# "user": "3227456102@qq.com", # 发邮件账号
# "password": "xxxxxxxxxxxxxxxxf", # 发件账号对应的密码(QQ使用的是授权码,而不是QQ密码)
# "host": "smtp.qq.com", # 邮件账号的SMTP服务器
# "port": "465" # SMTP服务器端口 465
# }
# # 收件人列表
# emailList = ["3227456102@qq.com"]
# # 实例化发送者
# email = yagmail.SMTP(**args)
# contens = get_data()
# # 调用消息发送函数,参数分别是:to=收件人列表,subject 邮件标题,contents 邮件正文,cc 邮件抄送人
# email.send(to=emailList, subject="数据统计", contents=str(contens))
# 推送到wx
bot = Bot(cache_path=True)
def send_news():
try:
# 你朋友的wx名称,不是备注,也不是wx帐号。
my_friend = bot.friends().search(u'xx科技')[0]
data = ','.join(get_data())
print(data)
content = "xxx医院,正常,2月12日至今,网上问诊咨询服务的浏览量为:人次" ';' str(data) '.'
# my_friend.send(u"正在轰炸你的wx!")
my_friend.send(content)
# 每86400秒(1天),发送1次,不用linux的定时任务是因为每次登陆都需要扫描二维码登陆,很麻烦的一件事,就让他一直挂着吧
# t = Timer(6000000, send_news)
# t.start()
except:
# 你的wx名称,不是wx帐号。
my_friend = bot.friends().search('zhong')[0]
my_friend.send(u"今天消息发送失败了")
if __name__ == "__main__":
# get_token()
# get_data()
# send_semail()
send_news()
实践结果
wx推送结果
邮箱推送结果
结合jenkins,实现定时推送
jenkins配置如下
注意点:
1、推送wx消息,itchat,当前新注册的wx用户不能进行推送;
2、使用wx推送时,扫码,其实就是登陆网页版wx,必须保证wx不下线才可以推送消息,个人感觉不是很友好。