php - renovació - renovar paro sepe
Automatice la obtención de informes desde la página web (4)
Soy un desarrollador de Java y tengo una pregunta sobre la automatización de una tarea que me han asignado. Tengo que pasar 3 veces al día, iniciar sesión en este sitio web que tenemos en el trabajo, seleccionar algunos elementos del formulario y luego hacer clic en enviar para imprimir un informe. Me pregunto cómo puedo escribir algún tipo de script que automatice esta tarea. ¿Donde debería empezar? ¿En qué idioma debería hacerlo? Estaba pensando que PHP podría hacer esto o incluso un script de greasemonkey posiblemente?
Muchas gracias.
Consulte cURL en PHP. Le permite realizar todas las funciones normales de un navegador web con código (que no sea mover el mouse). Y sí, tendrás que hacer raspado de pantalla.
Creo que el punto de fricción potencial que aún no se ha mencionado es su frase "iniciar sesión en este sitio web" ... Dependiendo de cómo necesite iniciar sesión, es posible que deba ingresar por una puerta trasera para acceder al informe.
Tuve problemas con este tipo de cosas en el pasado cuando tuve que descargar un informe de un sitio de terceros. El problema era que no podía autenticarme para acceder a los parámetros del informe debido a la forma codificada y no tan fácil de usar que me obligaba a iniciar sesión en el sitio. Sin embargo, supongo que su sitio es interno para su organización, por lo que es posible omitir / modificar los requisitos de seguridad para acceder a los datos. Si este es el caso, entonces debería poder utilizar uno de los métodos de raspado de pantalla descritos anteriormente.
De lo contrario, es posible que deba incorporar el procedimiento de inicio de sesión real en su secuencia de comandos o aplicación, descargar y capturar las cookies que puedan establecerse e incorporarlas en su solicitud de datos.
No sé en qué idioma está escrito su formulario, pero lo que podría hacer es:
- reescribe el formulario a un script que genera el informe cuando se llama
- use una entrada cron para programar que esta tarea se haga diariamente y envíele la salida por correo
Un cron es básicamente una tarea programada en sistemas Unix. Los servidores basados en Windows pueden usar el Programador de tareas para el mismo fin.
Lo anterior supone que tiene acceso al script que genera el informe en este momento y puede modificarlo / copiarlo en un nuevo archivo que le enviará la salida por correo electrónico. De lo contrario, es posible que deba examinar el raspado de la pantalla. Como usted es un desarrollador de Java, puede encontrar esta lista de utilidades para raspar pantallas de Java a mano para comenzar.
Se llama "raspado de la web" o "raspado de la pantalla", y hay muchas bibliotecas para hacer esto. Sin embargo, no pude hablar con una herramienta específica de Java: soy un tipo de .Net (el modo .Net sería System.Net.WebClient o System.Net.HttpWebRequest / System.Net.HttpWebResponse). Pero estoy seguro de que hay algo.
Mientras tanto, el primer paso es ir a la página donde ingresa los valores del formulario y ver el origen de la página. Busque el elemento <form> específico que está completando y vea dónde se publica (su acción ). Luego, encuentre los elementos <input> <select>, <textarea> que use, incluidas las entradas ocultas para el formulario, y descubra qué valores necesita obtener. Eso le dirá cómo crear su solicitud una vez que encuentre una biblioteca que le permitirá enviarla.
Si necesita iniciar sesión en el sitio primero para acceder a la página, las cosas pueden ser más complicadas. Es posible que necesite recuperar y analizar el valor de una sesión, o poder enviar ciertas cookies al servidor.