使用宏/脚本监控网页

使用宏/脚本监控网页

我正在为我的大学报名课程;但是,课程已经满了,我需要不断刷新以检查课程是否开课。我想刷新一个特定的页面,其中包含我感兴趣的课程是否开课/关闭的详细信息。我不能简单地使用 Chrome 扩展程序(例如 Page Monitor),因为如果我点击浏览器刷新按钮,我最终会被定向到大学的主登录页面(我没有退出,只是在网站的不同部分,而不是我需要检查更改的部分)。

我如何才能拥有一个脚本/宏来执行以下操作:

1)刷新页面。

2) 导航到我需要检查的页面。(大约点击 3 次,其中一次点击的是单选按钮,如果这有区别的话)。

3)检查我正在寻找的更改,如果存在更改,则发送电子邮件或创建桌面通知。

4) 经过一定时间后重复...例如 5 分钟。

我已经在 Google 上搜索了很长时间以寻找解决方案,但似乎还没有解决方案。我真的很想得到一些想法/解决方案。谢谢!

答案1

我一直在尝试做类似的事情。我能想到的最好的办法是从 Excel 运行的 VBA 脚本。它可以打开页面、登录(如果需要)并模拟按钮点击。可以扫描页面内容以查找更改,如果有更改,可以向您发送电子邮件。唯一的问题是你必须有一台可以打开 Excel 的计算机

该宏由 3 个宏组成 1) 打开时运行宏 2) 设置时间间隔 3) 执行脚本

子自动打开()
    宏调度器
子目录结束

子宏调度器()
    '此宏将脚本设置为每分钟运行一次
    runontime = Now + TimeValue("00:01:00") '在此处更改时间间隔
    应用程序.OnTime runontime,“宏调度程序”
    OnlineChecker 运行时
子目录结束

Sub OnlineChecker(ByRef timetorun2)
    Dim NewEntry 作为布尔值
    新条目 = False
    Dim ThisDoc 作为对象
    设置 ThisDoc = Workbooks(ThisWorkbook.Name).Worksheets("Sheet1")
    Dim 即作为对象
    设置 ie = CreateObject(“InternetExplorer.Application”)
    Dim IEobj 作为变体
    Dim doc 作为变体


    使用 ie
        .navigate "[YOUR URL]" '在此处插入您的 URL
        .可见 = 假
    结尾

        执行期间,即 Busy: DoEvents: Loop
        执行时即 ReadyState 4: DoEvents: 循环

    设置 el = doc.getElementsByTagName("Input") '这可以根据元素类型进行更改
    对于 el 中的每个 IEobj
            选择案例 IEobj.ID
            Case Is = "[元素名称]" ' 在此处插入 HTML 元素的名称
                    IEobj.单击
            结束选择
    下一个

    执行期间,即 Busy: DoEvents: Loop
        执行时即 ReadyState 4: DoEvents: 循环



    如果不是 ThisDoc.Range("A1") = "" 那么
            如果 ThisDoc.Range("A1") = doc.body.innerText 那么
                退出子程序
            别的
                ThisDoc.Range("A1") = doc.body.innerText
                新条目 = True
            万一
    别的
        ThisDoc.Range("A1") = doc.body.innerText
    万一

        如果 NewEntry = True 则
            新条目 = False
    '这适用于 Gmail 账户

    昏暗的iMsg作为对象
        Dim iConf 作为对象
        Dim strbody 作为字符串
        Dim Flds 作为变体

        设置 iMsg = CreateObject("CDO.Message")
        设置 iConf = CreateObject("CDO.Configuration")

    iConf.加载-1
    设置 Flds = iConf.Fields
        与 Flds
            .Item("http://schemas.microsoft.com/cdo/configuration/smtpusessl") = True
            .Item("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate") = 1
            .Item("http://schemas.microsoft.com/cdo/configuration/sendusername") = "[在此处插入您的电子邮件地址]"
            .Item("http://schemas.microsoft.com/cdo/configuration/sendpassword") = "[插入您的密码]"
            .Item("http://schemas.microsoft.com/cdo/configuration/smtpserver") = "smtp.gmail.com"
            .Item("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2
            .Item("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = 465
            。更新
        结尾

        strbody = "班级发帖"


        使用 iMsg
            设置 .Configuration = iConf
            .To =“[插入您的电子邮件地址]”
            .CC = “”
            .BCC = “”
            .From =“[插入您的电子邮件地址]”
            .Subject = “课程发布”
            .文本主体 = strbody
            。发送
        结尾

        万一
        Application.StatusBar = "完成 - 下次运行@" & timetorun2
            ie.Quit:设置 ie = Nothing

子目录结束

答案2

使用Trimgle 网络监控器现代浏览器的扩展

使用 Trimgle,您可以监控所有网页和 JSON(如 REST API),您可以将收集到的信息自动发送到 Webhook 页面

相关内容