当RPA流程自动控制机器人遇到了GitHub Actions和Wxpusher,实现自动推送一体化服务

当我要天天看研招网是否更新时,我想到了RPA流程自动控制机器人(Robotic process automation)…

这里的RPA流程自动控制机器人是指什么?你可以简单理解为自动化控制

试想一下,为了获取考研最新动态,你不得不随时随刻盯着研招网,经历过的人都知道那种心理煎熬感…但是如果有这么一套自动化流程程序,每过5分钟,自动获取研招网动态,如果研招网更新,则立马以消息推送或电话的方式通知你,这样你就可以无忧无虑地~~(打开你的游戏啦)专心~~备考啦!

没错,这就是今天要给大家介绍的内容,当你天天要做一件简单、枯燥的事情的时候,不妨试试RPA流程自动控制。接下来我们将会以获取研招网最新动态为例,教你如何打造自己的RPA机器人。本教程需用到如下技术栈:

  • GitHub Actions
  • Python

流程分析

首先,你需要想办法获取到研招网最新动态,其次,获取到数据后你要对获取的消息进行处理判断,是不是你所需要的信息。这里使用的是python爬虫。

然后,处理好信息后,你需要能够将信息快速准确地送达给你。这里使用的是Wxpusher。

最重要的是如何实现持续监控呢?这里有必要介绍一下触发器的概念了。

触发器,功能顾名思义,就是用于触发,你可以设置触发条件,例如每过多长时间触发,完成特点事件后触发等。

那如何实现触发效果呢?这里是基于GitHub actions实现定时触发效果。

过程实现

第一步:python爬虫获取研招网最新动态

编写python爬虫脚本,爬取研招网站,获取HTML信息并分析是否是今日更新信息:

from push import *                  # 导入编写的推送模块
import time                         # 导入python自带时间模块
import urllib.request,urllib.error  # 获取网页数据

# 编写主函数
def main():
    baseurl = "https://yz.chsi.com.cn/kyzx/kydt/?start=0"     # 网站url
    askURL(baseurl)     

# 爬取网站
def askURL(url):
    head = {  # 模拟浏览器头部信息,向服务器发送消息
        "User-Agent": "Mozilla / 5.0(Windows NT 10.0;WOW64) AppleWebKit / 537.36(KHTML, likeGecko) Chrome / 86.0.4240.198Safari / 537.36"
    }  # 用户代理——表示告诉服务器,我们是什么类型的机器·浏览器(本质上是告诉浏览器,我们可以接受什么水平的文件内容)

    request = urllib.request.Request(url, headers=head)
    html = ''

    try:
        response = urllib.request.urlopen(request)
        html = response.read().decode("utf-8")
        print("---正在爬取页面HTML,请稍等---")
        print(html)       #测试:查看页面HTML

        date = time.strftime('%Y-%m-%d',time.localtime(time.time()))    # 获取今天日期
        # print(date)
        if date in html:                    # 如果今天有更新的就推送
            push(1)
            print("更新啦")
        else:
            push(0)
            print("未更新")
    except urllib.error.URLError as e:
        if hasattr(e,"code"):       #判断e对象是否包含对应的属性
            e = str(e.code)
            print("爬取失败,e.code" + e)
        if hasattr(e,"reason"):
            e = str(e.reason)
            print("爬取失败,e.reason:" + e)
    return html

if __name__ == "__main__":
    #调用函数
    main()
    print("运行完毕")

第二步:WxPusher实现消息推送

编写WxPusher模块:

import requests
import json

def push(status):
    if status:
        datas = json.dumps({
                        "appToken":"AT_xxx",
                        "content":"研招网更新了!快去看看是不是你需要的内容!",
                        "contentType": 1,
                        "summary":"研招网更新了!",
                        "uids":["UID_xxxx"],
                        "url":"https://yz.chsi.com.cn/kyzx/kydt/?start=0"
                    })
    else:
        datas = json.dumps({
            "appToken": "AT_xxx",
            "content": "呜呜呜!研招网还没有更新,请耐心等待!!!",
            "contentType": 1,
            "summary": "研招网还没有更新",
            "uids": ["UID_xxxx"],
            "url": "https://yz.chsi.com.cn/kyzx/kydt/?start=0"
        })
    headers = {'Content-Type': 'application/json'}
    r = requests.post("http://wxpusher.zjiecode.com/api/send/message", data=datas,headers=headers)
    print(r.text)
    print(r.status_code)

第三步:部署GitHub actions上实现自动执行工作流程(Workflow)

  • 在GitHub上新建一个仓库,这里以workflow为例,将第一步和第二步编写的脚本放置一个文件夹中(这里以”自动化爬取研招网更新状态“为例)上传至GitHub根目录下。
    在这里插入图片描述
  • 点击Actions,建立你的工作流(workflow)
    在这里插入图片描述
  • 在workflow中编写如下自动化脚本
# 这是帮助您开始操作的基本工作流程

name: 自动获取研招网更新状态

# 控制何时运行工作流(每5分钟运行一次)
on:
  schedule:
    - cron: '*/5 * * * *'

# 工作流运行由一个或多个作业组成,这些作业可以顺序或并行运行
jobs:
  # 这个工作流包含一个名为“job1”的作业。
  job1:
    # 作业将在其上运行的系统
    runs-on: ubuntu-latest

    # 步骤表示将作为作业的一部分执行的任务序列
    steps:
      # 克隆仓库
      - name: "Checkout codes"
        uses: actions/checkout@v2
        
      # 初始化Python环境
      - name: "Setup Python"
        uses: actions/setup-python@master
        with:
          python -version: 3.8
      
      # 下载对应库
      - name: "install dependencies"
        run: |
          # 更新pip
          pip install requests
     
      # 运行脚本
      - name: "run Python"
        run: |
          python ./自动化爬取研招网更新状态/web_spider.py

效果展示

请添加图片描述
请添加图片描述
请添加图片描述
请添加图片描述
一旦其检测到研招网更新啦,就会给你的微信推送请添加图片描述
最后欢迎关注我的GitHub,点亮一颗小新星
https://github.com/Mr-KID-github/workflow
关于项目的所有文件都放在其中,后续还将介绍如何利用树莓派进行电话通知!!!即每次检测到研招网更新就会电话通知

相关参考

GitHub actions文档:https://docs.github.com/cn/actions

WxPusher微信推送服务:https://wxpusher.dingliqc.com/docs/#/

python urllib.request模块的使用详解:https://www.jb51.net/article/207790.htm

时间触发器参考文档:https://crontab.guru/every-5-minutes

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

YuZou 邹宇

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值