在日常使用中,我们可能经常有一些需求会用到 Selenium 这个 Python

经过一番探索,算是找到了一种解决方案(百度看的几篇文章好像报错….)

先看效果图:

1.png

示例地址:

运行状态

上面的地址如果运行正常的话,就说明本篇教程的内容还适用~

话不多说,开始教程

首先,你得有代码吧..

那么我们想要在云端运行的话,首先这个代码要可以在本地运行。

这里提供一段示例的代码。这份代码的操作是打开网易云的 MV 界面

然后去获取到当前 MV 的真实地址,接着把返回值传递到 Redis 上面

可以看到,这篇文章里面用到了环境变量,因为我们总不能将自己的密码暴露在 互联网 上吧 👀

我们在本地的话,设置环境变量可以看这个视频 ( Windows )

在本地配置好了之后,我们就可以上云了(上面的 Redis 是一个缓存功能,测试的话不用也行)

Github Action环境变量 在这里配置

2

我们在这里设置了环境变量之后,就可以在 Aciton 中这样读取环境变量

环境变量的问题解决了,我们只需要再解决 配置 Selenium 的问题就好啦

想要运行 Action 的话,入口在这里

3

点击之后,我们可以看到一个 yml 后缀的文件,这个文件负责控制 Action 的工作流程

我这里先提供一个完整的工作流程供大家参考

可以看到里面的东西也不是很多,具体的教程可以查看大佬这几篇教程。

我们主要需要的部分有这几部分

这几部分也比较容易理解,就是分别告诉 Github 前期要准备什么

比较有含金量的是这个代码:

对的没错,安装 ChromeDriver ,这部分代码是我偶然从这个仓库翻到的

虽然里面的 Action 已经久置且很久没人维护了,但是里面的思路很好,省去了自己配置 ChromeDriver 的时间。

配置完这个,再来讲一下这个定时任务

Github Action 的 定时任务使用到的是一个叫做 Cron 的表达式

但是我不解的是,似乎各个平台都有自己独特的一套标准…

好在 Github 有自动提示功能,当你输入之后,会有浮窗告诉你下次运行是什么时间

3

这个的意思是 在每小时的 :02 运行,而不是每两分钟运行(下图才是每两分钟运行一次 👀)

上面提供的代码块可以当做一个模板用。我感觉很好用….

这里再贴一下那个仓库的源码,供大家参考:

这里还需要注意的是,经过上述步骤之后 Github Action 已经安装了 ChromeDriver,但是我们在 Python 脚本中要这样写

按照以上步骤配置完成之后,应该是可以正常运行的。

需要注意的是 Github 的定时功能可能存在 20 分钟左右的延迟,不大适合需求高精度时间的项目

但是每次上传代码的时候,都会触发 Github Action

或许可以在本地写定时任务,自动提交代码,从而触发 Action 执行?

没尝试过,理论上来说应该可以…..

提供一个 Python 最小化实践案例来结束本文。

./test.py

./requirements.txt

/.github/workflows/main.yml

测试成功

7