Procedura: scaricare una pagina dalla Wayback Machine per un intervallo specificato


11

Ciò che intendo è scaricare ciascuna pagina disponibile dalla Wayback Machine in un periodo di tempo e intervallo specifici. Ad esempio, voglio scaricare ogni pagina disponibile ogni giorno da nature.com da gennaio 2012 a dicembre del 2012. (Non esattamente quello che voglio fare, ma è abbastanza vicino - e fornisce un buon esempio.)

purtroppo, wget non funzionerà a causa della natura unica di come funziona la macchina Wayback.

Sembra che strumenti come il downloader di Wayback Machine scarichino solo la versione più recente della pagina.

Interagire con l'API IA sembra una via praticabile, ma non sono sicuro di come funzionerebbe.

Grazie!


Avresti sicuramente bisogno di scrivere una sceneggiatura per questo. Forse curl?
PulseJet,

Penso che sarebbe possibile scrivere una sceneggiatura e fare affidamento su cURL, ma non ho familiarità con l'API Memento che utilizza Internet Archive e non credo di averlo visto usato in questo modo.
Orlando Marinella,

Ho bisogno di a) Fare più siti contemporaneamente, b) acquisire un'istantanea di ciascun sito per un lungo intervallo (diciamo, dal 1998 al 2001) ec) essere in grado di specificare il numero di istantanee che voglio prendere in quell'intervallo.
Orlando Marinella,


Stesso problema. Vogliono solo una pagina, a quanto pare - la documentazione per il downloader di WB Machine è vaga se funziona su un intervallo del genere o no.
Orlando Marinella,

Risposte:


5

Le modalità di waybackformattazione degli URL sono le seguenti:

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

Ecco di BASEURLsolito http://web.archive.org/web(dico di solito perché non sono sicuro che sia l'unico BASEURL)

TARGETsi spiega da sé (nel tuo caso http://nature.com, o qualche URL simile)

TIMESTAMPè YYYYmmddHHMMssquando è stata effettuata la cattura (in UTC):

  • YYYY: Anno
  • mm: Mese (2 cifre - da 01 a 12)
  • dd: Giorno del mese (2 cifre - da 01 a 31)
  • HH: Ora (2 cifre - da 00 a 23)
  • MM: Minuti (2 cifre - da 00 a 59)
  • ss: Secondo (2 cifre - da 00 a 59)

Nel caso in cui si richieda un tempo di acquisizione che non esiste, la macchina di ritorno reindirizza alla cattura più vicina per quell'URL, sia in futuro che in passato.

Puoi utilizzare quella funzione per ottenere ogni URL giornaliero utilizzando curl -I(HTTP HEAD) per ottenere il set di 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

In questo modo riceverai gli URL più vicini a mezzogiorno di ogni giorno del 2012. Basta rimuovere i duplicati e scaricare le pagine.

Nota: lo script sopra può probabilmente essere notevolmente migliorato per saltare in avanti nel caso in cui REDIRECTsia per un URL più di 1 giorno in futuro, ma richiede quindi la decostruzione dell'URL restituito e l'adattamento STARTal valore di data corretto.


Questo è fantastico, perché? perché abbiamo fatti e prove di quando qualcuno ha archiviato i contenuti e web.archive.org ha rimosso i contenuti archiviati in passato. Questo script sopra salverebbe il contenuto archiviato. Eccezionale.
DeerSpotter

Tuttavia scarica solo il file principale e non js, html, css correlati.
Scopo

In realtà questo script non scarica nulla : mostra solo l'URL più vicino. Puoi collegare quell'URL wgeto qualsiasi altro page-gettercon le opzioni corrette (nota l' -Iopzione a curl).
Samveen,

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.