自动从网页获取报告

时间:2008-10-09 21:30:47

标签: php post automation scripting greasemonkey

我是一名Java开发人员,我有一个关于自动执行任务的问题。我每天要做3次,登录我们工作的这个网站,选择一些表单元素,然后点击提交以打印出一份报告。我想知道如何编写某种自动执行此任务的脚本?我应该从哪里开始?我应该用什么语言?我以为PHP可能能够做到这一点甚至可能是一个非常好的程序?

非常感谢。

4 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分:1)

我认为尚未涉及的潜在问题点是您的“登录此网站”......根据您需要登录的方式,您可能需要通过后门才能访问报告。

过去,当我不得不从第三方网站下载报告时,我遇到了这类问题。问题是我无法进行身份验证以访问报告参数,因为我需要登录到网站时采用硬编码且不易编写脚本的方式。但是,我认为您的站点是组织内部的,因此可以绕过/重新设计安全要求以访问数据。如果是这种情况,那么您应该能够使用上面概述的一种屏幕抓取方法。

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

答案 2 :(得分:0)

它被称为“网络抓取”或“屏幕抓取”,并且有很多库可以做到这一点。我不能说一个特定于java的工具:我是一个.Net的人(.Net方式是System.Net.WebClient或System.Net.HttpWebRequest / System.Net.HttpWebResponse)。但我确定有一些东西。

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

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

答案 3 :(得分:0)

我不知道您的表格是用哪种语言写的,但您可以做的是:

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

cron基本上是Unix系统上的预定任务。基于Windows的服务器可以使用任务计划程序来实现相同目的。

以上假设您可以访问生成报告的脚本,并可以对其进行修改/将其复制到新文件中,该文件会将输出通过电子邮件发送给您。如果没有,那么您可能需要查看屏幕抓取。由于您是Java开发人员,您可能会发现this list of Java screen scraping utilities可以帮助您入门。