我是一名Java开发人员,我有一个关于自动化给定任务的问题。
我每天要3次,登录我们工作中的这个网站,选择一些表格元素,然后点击提交,打印出一份报告。
我想知道如何编写某种脚本来自动化这项任务?我应该从哪里开始?我应该用什么语言做?我在想PHP可能能够做到这一点,甚至可能是一个油腔滑调的脚本?
非常感谢。
查看PHP中的cURL。它允许你用代码完成网络浏览器的所有正常功能(除了移动鼠标)。是的,你需要做屏幕抓取。
我认为尚未触及的潜在症结是你的短语"登录此网站"。。。根据您需要登录的方式,您可能需要从后门登录才能访问报告。
过去,当我不得不从第三方网站下载报告时,我遇到了这种问题。问题是,我无法通过身份验证来访问报告参数,因为登录该网站需要硬编码且不太适合脚本的方式。然而,我认为您的网站是您组织内部的,因此可能会绕过/重新制定安全要求来访问数据。如果是这种情况,那么您应该能够使用上面概述的屏幕抓取方法之一。
如果没有,您可能需要将实际登录过程纳入您的脚本或应用程序,下载并捕获可能设置的任何cookie,并将其纳入您的数据请求中。
我不知道你的表单是用什么语言写的,但你可以做的是:
- 将表单重写为在调用时生成报告的脚本
- 使用cron条目安排每天完成此任务,并将输出邮寄给您
cron基本上是Unix系统上的一个调度任务。基于Windows的服务器可以使用任务调度程序达到相同的目的。
以上假设您有权访问当前生成报告的脚本,并可以将其修改/复制到一个新文件中,该文件将通过电子邮件向您发送输出。如果没有,那么你可能需要研究屏幕抓取。作为一名Java开发人员,您可能会发现以下Java屏幕抓取实用程序列表非常方便。
它被称为"web抓取"或"屏幕抓取",有很多库可以做到这一点。不过,我无法使用特定于Java的工具:我是一个。Net家伙(.Net的方式是System.Net.WebClient或System.Net.HttpWebRequest/System.Net.HttpWebResponse)。但我确信有一些东西。
同时,第一步是转到输入表单值的页面并查看页面的源代码。查找特定<form>元素,并查看它发布到哪里(这是操作)。然后,找到任何<输入><选择>,<textarea>元素,包括表单的任何隐藏输入,并计算出需要获得的值。一旦你找到一个可以发送请求的库,它就会告诉你如何构建请求
如果你需要先登录网站才能进入页面,事情可能会更复杂。您可能需要检索和解析会话值,或者能够向服务器发送某些cookie。