0

我是一名 Java 开发人员,我有一个关于自动执行给我的任务的问题。

我每天必须登录 3 次,登录我们工作中的这个网站,选择一些表单元素,然后单击提交以打印出报告。

我想知道如何编写某种脚本来自动执行此任务?我应该从哪里开始?我应该用什么语言来做?我在想PHP可能能够做到这一点,甚至可能是一个greasemonkey脚本?

非常感谢。

4

4 回答 4

2

查看PHP 中的cURL。它允许您使用代码执行 Web 浏览器的所有正常功能(除了移动鼠标)。是的,您需要进行屏幕抓取。

于 2008-10-09T21:57:03.643 回答
1

我认为尚未触及的潜在症结是您的短语“登录到该网站”......根据您需要登录的方式,您可能需要通过后门进入以访问报告。

过去,当我不得不从第三方网站下载报告时,我遇到过此类问题。问题是我无法通过身份验证访问报告参数,因为我需要以硬编码且对脚本不太友好的方式登录该站点。但是,我认为您的网站在您的组织内部,因此可能会绕过/修改安全要求以访问数据。如果是这种情况,那么您应该能够使用上述屏幕抓取方法之一。

如果没有,您可能需要将实际登录过程合并到您的脚本或应用程序中,下载并捕获可能设置的任何 cookie 并将它们合并到您的数据请求中。

于 2008-10-09T21:50:03.750 回答
0

它被称为“网络抓取”或“屏幕抓取”,并且有很多库可以做到这一点。但是,我无法使用特定于 Java 的工具:我是一个 .Net 人(.Net 方式是 System.Net.WebClient 或 System.Net.HttpWebRequest/System.Net.HttpWebResponse)。但我敢肯定有什么东西。

同时,第一步是进入您输入表单值的页面并查看页面的来源。查找您要填写的特定 <form> 元素,并查看它发布到的位置(它是action)。然后,找到您使用的任何 <input> <select>、<textarea> 元素,包括表单的任何隐藏输入,并找出您需要获取的值。一旦你找到一个可以让你发送请求的库,这将告诉你如何构建你的请求。

如果您需要先登录网站才能访问该页面,事情可能会更复杂。您可能需要检索和解析会话值,或者能够将某些 cookie 发送到服务器。

于 2008-10-09T21:33:55.577 回答
0

我不知道你的表格是用什么语言写的,但你可以做的是:

  • 将表单重写为调用时生成报告的脚本
  • 使用cron条目来安排此任务每天完成并将输出邮寄给您

cron 基本上是 Unix 系统上的计划任务。基于 Windows 的服务器可以使用任务计划程序来达到同样的目的。

以上假设您现在可以访问生成报告的脚本,并且可以对其进行修改/将其复制到一个新文件中,该文件将通过电子邮件将输出发送给您。如果没有,那么您可能需要查看屏幕抓取。作为一名 Java 开发人员,您可能会发现这个 Java 屏幕抓取实用程序列表可以方便地帮助您入门。

于 2008-10-09T21:34:39.507 回答