python实现抓取web和xcx数据推送到wx和邮件

2020-09-24 15:34:54 浏览数 (1)

实现目的

每天定时抓取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不下线才可以推送消息,个人感觉不是很友好。

0 人点赞