自动从网页获取报告


Automate getting report from webpage

我是一名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。