likes
comments
collection
share

python-实现地铁延误告警

作者站长头像
站长
· 阅读数 7

在深圳地铁延误、临停n次之后

终于让我不得不又new了一个py文件😭😭

这次主要记录的是一个延误告警的开发过程

一、实现逻辑

使用库:requests,time,zmail,re

实现逻辑:

1、抓取深圳地铁微博的文章

2、判断是否有延误相关的内容

3、判断时间是否是今天 4、通知方式:邮件

5、定时执行任务

二、抓取深圳地铁微博(一中1~3)

def goout_report():
    url ="https://weibo.com/ajax/statuses/mymblog"
    # url ="https://weibo.com/szmcservice/statuses/mymblog"
    data = {"uid":2311331195,"page":1,"feature":0}
    headers={
    "accept":"application/json, text/plain, */*",
    "accept-encoding":"gzip, deflate, br",
    "accept-language":"zh-CN,zh;q=0.9",
    "referer":"https://weibo.com/szmcservice?tabtype=feed",
    "cookie":"SUB=_2AkMV8LtUf8NxqwJRmf8XzmLgaY9wywjEieKjrEqPJRMxHRl-yT92ql0ctRB6PnCVuU8iqV308mSwZuO-G9gDVwYDBUdc; SUBP=0033WrSXqPxfM72-Ws9jqgMF55529P9D9WFpwsXV4nqgkyH.bEVfx-Xw; login_sid_t=c6bbe5dc58bf01c49b0209c29fadc800; cross_origin_proto=SSL; _s_tentry=passport.weibo.com; Apache=4724569630281.133.1655452763512; SINAGLOBAL=4724569630281.133.1655452763512; ULV=1655452763517:1:1:1:4724569630281.133.1655452763512:; wb_view_log=1920*10801; XSRF-TOKEN=1YMvL3PsAm21Y3udZWs5LeX3; WBPSESS=xvhb-0KtQV-0lVspmRtycws5Su8i9HTZ6dAejg6GXKXDqr8m6IkGO6gdtA5nN5IMNb5JZ1up7qJoFXFyoP2RSQSYXHY1uLzykpOFENQ07VthB0G9WHKwRCMWdaof42zB4mOkdTEeX_N9-m1x6Cpm3pmPsC1YhmTwqH8RGwXmYkI=",
    "referer":"https://weibo.com/szmcservice",
    "x-requested-with": "XMLHttpRequest",
    "x-xsrf-token":"1YMvL3PsAm21Y3udZWs5LeX3",
    "sec-ch-ua":'Not A;Brand";v="99", "Chromium";v="102", "Google Chrome";v="102',
    "sec-ch-ua-platform":"Windows",
    "sec-fetch-dest": "empty",
    }
    text = requests.get(url,headers=headers,params=data,verify=False).json()['data']['list']
    today_date = time.ctime()[:10]
    for i in range(1,5):
        time_post = text[i]['created_at'][:10]
        content = str(text[i]).split("'text': '")[1].split(", 'textLength'")[0]
        tp=""
        if '延误' in content and time_post == today_date:
            # mail(content)
            text = re.findall(">(.*?)<|>(.*?)\\",content)
            for i in text:
                for j in i:
                    if j!="":


                       tp=tp+j

           mail(tp)
            break
        else:
            continue
 

三、邮件通知,代码如下

def mail(content):
    mail = {
        'subject': '别墨迹了!地铁又双叒叕延误啦',  #邮件标题
        'content_text': content,  # 邮件内容
    }
    server = zmail.server('自己的邮箱', '密码',smtp_host="smtp.qq.com",
                      smtp_port=465) #此处用的qq邮箱、授权码
    server.send_mail('收件人邮箱', mail)

ps:需去QQ邮箱网页版-设置-账户-开启smtp服务、获取授权码

四、定时执行任务

1、Jenkins比较合适项目的一个定时执行,

可参考如下:

jenkins环境: jenkins环境部署踩坑记

git环境:Mac-git环境搭建

2、windows-计算机管理比较合适脚本的执行,具体步骤如下,

  • windows键+R输入compmgmt.msc可进入计算机管理界面

    python-实现地铁延误告警

  • 点击上图“创建任务”后如图,

    “常规”界面上输入任务名称、选项二,

    这样锁屏也会自动执行脚本

    python-实现地铁延误告警

  • 点击“触发器”-新建进入新建触发器界面

    这个界面可设置任务执行时间、执行频率、任务重复间隔、延迟时间等等

    python-实现地铁延误告警

  • 点击“操作”-新建跳到如图-新建操作界面

    这个界面可在“程序或脚本”输入框设置脚本运行程序,比如python.exe

    在“添加参数”输入框设置需要运行脚本路径(包含脚本名)

    在“起始于”输入框设置脚本执行路径(一般可为脚本目录)

    python-实现地铁延误告警

  • 其他选项卡也可以看看,

    全部填写完可以点击“创建任务”界面上的“确定”按钮,

    然后在列表中找到新建的任务点击可查看,

    python-实现地铁延误告警

  • 实时执行测试的话可以点击上图“运行”按钮

    或者右击任务-运行即可

    任务执行结果如下:

python-实现地铁延误告警