Guarde una página web con scripts utilizando wget


0

¿Alguien sabe cómo guardar una página web con scripts utilizando wget? ¿O qué parámetros hay que usar para lograr?

La página web contiene scripts y parece que solo la extensión SingleFile Core en Chrome puede guardar toda la propiedad de contenido. Firefox no puede guardar el contenido de la tabla y el guardado integrado de Chrome se bloqueará mostrando el mensaje 'por favor espere' para la página de resultados.

Las otras partes de la página no son importantes, solo lo es el contenido de la tabla, así que decido encontrar una manera de hacerlo, pero pasé una hora para analizar el código fuente y ver la información de las herramientas de desarrollo de f12, pero no puedo una manera de guardar solo el contenido de la tabla.

Aquí está la página web: http://m.marine.gov.mo/seawayScheduled/RealTimeSailing.aspx?type=dataDepartureXML&local=PE&lang=ENG

¡Gracias por la ayuda!


Este tipo de página generalmente usa "AJAX": la página en sí no tiene datos y algunos códigos JavaScript envían una solicitud HTTP para recuperar los datos desnudos (como XML, parece en este caso), que luego se analiza e inserta en el HTML. Es mucho más eficiente encontrar esa llamada y emularla. Utiliza una herramienta como LiveHTTPHeaders (Firefox) o el depurador incorporado para buscar las solicitudes que envía el código JavaScript.
xenoid

¡Gracias por la respuesta! Hay 8 líneas de JavaScript y 3 líneas de recursos desconocidas con la ayuda de LiveHTTPHeaders, pero todas ellas son códigos y no sé cómo pueden recuperar el archivo XML. Lo siento, pero solo estoy familiarizado con HTML.
Sam

Respuestas:


0

Y la respuesta es:

wget --header 'Content-type: application/json' --header 'Cookie: ASP.NET_SessionId=1bsq4nw4nj30groly5pv5zt3' --post-data='{"local":"PE","type":"dataDepartureXML"}' 'http://m.marine.gov.mo/seawayScheduled/RealTimeSailing.aspx/GetData'

Donde el bit 'ASP.NET ...' es una cookie que desafortunadamente es obligatoria. Esta cookie se envía cuando recupera la página principal. Entonces tienes que hacerlo un poco diferente con dos comandos:

  • uno que obtiene la página principal y la descarta (pero mantiene la cookie en cookie.txt):

    wget --keep-session-cookies --save-cookies cookie.txt 'http://m.marine.gov.mo/seawayScheduled/RealTimeSailing.aspx?type=dataDepartureXML&local=PE&lang=ENG' -O /dev/null
    
  • uno que obtiene los datos, enviando la cookie:

    wget --load-cookies cookie.txt --header 'Content-type: application/json' --post-data='{"local":"PE","type":"dataDepartureXML"}' 'http://m.marine.gov.mo/seawayScheduled/RealTimeSailing.aspx/GetData' -O data.json
    

Los datos que obtienes son una matriz JSON con dos elementos de cadena, que son HTML sin formato. Los caracteres especiales (comillas, corchetes ...) se escapan, por lo que el resultado no es muy legible como tal, pero no es difícil de limpiar con algunos cambios globales en un editor.

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.