Cómo: descargar una página de Wayback Machine durante un intervalo especificado

11

Lo que quiero decir es descargar cada página disponible desde Wayback Machine durante un período e intervalo de tiempo específico. Por ejemplo, deseo descargar cada página disponible de cada día desde nature.com desde enero de 2012 hasta diciembre de 2012. (No es exactamente lo que quiero hacer, pero está lo suficientemente cerca, y proporciona un buen ejemplo).

Desafortunadamente, wget no funcionará debido a la naturaleza única de cómo funciona la máquina Wayback.

Parece que herramientas como el descargador de Wayback Machine solo descargan la versión más reciente de la página.

Interactuar con la API de IA parece una ruta viable, pero no estoy seguro de cómo funcionaría.

¡Gracias!

orlando marinella
fuente
Definitivamente necesitaría escribir un guión para esto. Tal vez cURL?
PulseJet
Creo que sería posible escribir un script y apoyarme en cURL, pero no estoy familiarizado con la API de Memento que usa Internet Archive, y no creo haberlo visto así.
orlando marinella
Necesito a) Hacer varios sitios a la vez, b) tomar una instantánea de cada sitio durante un intervalo largo (por ejemplo, 1998 a 2001), yc) poder especificar cuántas instantáneas quiero tomar durante ese intervalo.
orlando marinella
Posible duplicado: superuser.com/questions/828907/...
pulsejet
El mismo problema. Parece que solo quieren una página: la documentación para el descargador de WB Machine es vaga, ya sea que funcione en un intervalo como ese o no.
orlando marinella

Respuestas:

5

La forma en que waybackse formatean las URL es la siguiente:

http://$BASEURL/$TIMESTAMP/$TARGET

Aquí BASEURLestá generalmente http://web.archive.org/web(digo generalmente ya que no estoy seguro si es el único BASEURL)

TARGETse explica por sí mismo (en su caso http://nature.com, o alguna URL similar)

TIMESTAMPes YYYYmmddHHMMsscuando se realizó la captura (en UTC):

  • YYYY: Año
  • mm: Mes (2 dígitos - 01 a 12)
  • dd: Día del mes (2 dígitos - 01 a 31)
  • HH: Hora (2 dígitos - 00 a 23)
  • MM: Minuto (2 dígitos - 00 a 59)
  • ss: Segundo (2 dígitos - 00 a 59)

En caso de que solicite un tiempo de captura que no exista, la máquina wayback redirige a la captura más cercana para esa URL, ya sea en el futuro o en el pasado.

Puede usar esa función para obtener cada URL diaria usando curl -I(HTTP HEAD) para obtener el conjunto de URL:

BASEURL='http://web.archive.org/web'
TARGET="SET_THIS"
START=1325419200 # Jan 1 2012 12:00:00 UTC (Noon) 
END=1356998400 # Tue Jan  1 00:00:00 UTC 2013
if uname -s |grep -q 'Darwin' ; then
    DATECMD="date -u '+%Y%m%d%H%M%S' -r "
elif uname -s |grep -q 'Linux'; then
    DATECMD="date -u +%Y%m%d%H%M%S -d @"
fi


while [[ $START -lt $END ]]; do
    TIMESTAMP=$(${DATECMD}$START)
    REDIRECT="$(curl -sI "$BASEURL/$TIMESTAMP/$TARGET" |awk '/^Location/ {print $2}')"
    if [[ -z "$REDIRECT" ]]; then
        echo "$BASEURL/$TIMESTAMP/$TARGET"
    else
        echo $REDIRECT
    fi
    START=$((START + 86400)) # add 24 hours
done

Esto le proporciona las URL más cercanas al mediodía en cada día de 2012. Simplemente elimine los duplicados y descargue las páginas.

Nota: La secuencia de comandos anterior probablemente se puede mejorar mucho para avanzar en caso de que REDIRECTsea ​​para una URL más de 1 día en el futuro, pero luego requiere deconstruir la URL devuelta y ajustarla STARTal valor de fecha correcto.

Samveen
fuente
Esto es genial, ¿por qué? porque tenemos hechos y pruebas de cuándo alguien archivó contenido y web.archive.org ha eliminado contenido archivado en el pasado. Este script anterior guardaría el contenido archivado. Increíble.
DeerSpotter
Sin embargo, solo descarga el archivo principal y no está relacionado js, ​​html, css.
Propósito
En realidad, este script no descarga nada : solo muestra la URL más cercana. Puede conectar esa URL wgeto cualquier otra page-gettercon las opciones correctas (observe la -Iopción curl).
Samveen