La forma correcta de escritura tirando periódicamente una página de un sitio HTTPS

StackOverflow https://stackoverflow.com/questions/2875361

  •  03-10-2019
  •  | 
  •  

Pregunta

Quiero crear una secuencia de comandos de línea de comandos para Cygwin / Bash que se registra en un sitio, navega a una página específica y lo compara con los resultados de la última ejecución. Hasta el momento, tengo que trabajar con Lynx, así:

----snpipped, just setting variables----
echo "# Command logfile created by Lynx 2.8.5rel.5 (29 Oct 2005)
----snipped the recorded keystrokes-------
key Right Arrow
key p
key Right Arrow
key ^U" >> $tmp1 #p, right arrow initiate the page saving

#"type" the filename inside the "where to save" dialog
for i in $(seq 0 $((${#tmp2} - 1)))
do
    echo "key ${tmp2:$i:1}" >> $tmp1
done

#hit enter and quit
echo "key ^J
key y
key q
key y
" >> $tmp1

lynx -accept_all_cookies -cmd_script=$tmp1 https://thewebpage.com/login

diff $tmp2 $oldComp
mv $tmp2 $oldComp

Es definitivamente no se siente "derecho": la cmd_script consiste en las acciones del usuario relativos en lugar de especificar los nombres de los enlaces exactos y acciones. Por lo tanto, si hay algo en el sitio nunca cambia, cambia lugares, o se añade un nuevo enlace - Voy a tener que volver a crear las acciones.

Además, no puedo comprobar que no existen errores, así que no puede abortar la secuencia de comandos si algo va mal (Error de acceso, etc.)

Otra alternativa que he estado mirando es Mechanize con Ruby. (Como nota - 0 Tengo experiencia con Ruby)

¿Cuál sería la mejor manera de mejorar o volver a escribir esto?

¿Fue útil?

Solución

Creo que el lince es una gran herramienta para tareas de automatización web simple, pero por supuesto que tiene sus límites. Si necesita comprobación de errores se debe utilizar uno de los módulos de Mecanización para Perl, Python o Ruby (si no sabía nada de esto lenguajes Python puede ser el más fácil de aprender).

Para hacer el script lince un poco más robusto que podría utilizar la función de búsqueda para seleccionar enlaces. En algunas páginas utilizando la lista de enlaces (l) puede ayudar.

Al final me gustaría añadir algunas comprobaciones para ver si los archivos descargados es realmente el que usted desea.

Otros consejos

Podría ser útil wget aquí?

Es una utilidad de línea de comandos descarga http, https y FTD. Es software libre (GNU). Tiene muchas opciones, tales como la autenticación y el sellado de tiempo (sólo descargar un archivo si ha cambiado desde la última vez).

http://www.gnu.org/software/wget/

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top