我正在为我的大学报名课程;但是,课程已经满了,我需要不断刷新以检查课程是否开课。我想刷新一个特定的页面,其中包含我感兴趣的课程是否开课/关闭的详细信息。我不能简单地使用 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 页面