Comment: télécharger une page à partir de la machine Wayback sur un intervalle spécifié

11

Ce que je veux dire, c'est de télécharger chaque page disponible à partir de la Wayback Machine sur une période et un intervalle de temps spécifiés. Par exemple, je veux télécharger chaque page disponible de chaque jour sur nature.com de janvier 2012 à décembre 2012. (Pas précisément ce que je veux faire, mais c'est assez proche - et fournit un bon exemple.)

Malheureusement, wget ne fonctionnera pas en raison de la nature unique du fonctionnement de la machine Wayback.

Des outils comme Wayback Machine downloader ne téléchargent que la version la plus récente de la page, semble-t-il.

Interagir avec l'API IA semble être une voie viable, mais je ne sais pas comment cela fonctionnerait.

Merci!

orlando marinella
la source
Vous auriez certainement besoin d'écrire un script pour cela. Peut-être cURL?
PulseJet
Je pense qu'il serait possible d'écrire un script et de s'appuyer sur cURL, mais je ne suis pas familier avec l'API Memento qu'utilise Internet Archive, et je ne pense pas l'avoir vu utilisé de cette manière.
orlando marinella
Je dois a) faire plusieurs sites à la fois, b) saisir un instantané de chaque site sur un long intervalle (disons, 1998 à 2001), et c) être en mesure de spécifier combien d'instantanés je veux prendre sur cet intervalle.
orlando marinella
Copie
Même problème. Ils veulent juste une page, semble-t-il - la documentation pour le téléchargeur WB Machine est vague, que cela fonctionne sur un intervalle comme celui-ci, ou non.
orlando marinella

Réponses:

5

Les waybackURL sont formatées comme suit:

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

Voici BASEURLgénéralement http://web.archive.org/web(je dis généralement car je ne sais pas si c'est le seul BASEURL)

TARGETest explicite (dans votre cas http://nature.com, ou une URL similaire)

TIMESTAMPc'est YYYYmmddHHMMssquand la capture a été faite (en UTC):

  • YYYY: Année
  • mm: Mois (2 chiffres - 01 à 12)
  • dd: Jour du mois (2 chiffres - 01 à 31)
  • HH: Heure (2 chiffres - 00 à 23)
  • MM: Minute (2 chiffres - 00 à 59)
  • ss: Deuxième (2 chiffres - 00 à 59)

Si vous demandez une heure de capture qui n'existe pas, la machine de renvoi redirige vers la capture la plus proche pour cette URL, que ce soit dans le futur ou dans le passé.

Vous pouvez utiliser cette fonctionnalité pour obtenir chaque URL quotidienne à l'aide de curl -I(HTTP HEAD) pour obtenir l'ensemble d'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

Cela vous donne les URL les plus proches de midi chaque jour de 2012. Supprimez simplement les doublons et téléchargez les pages.

Remarque: Le script ci-dessus peut probablement être considérablement amélioré pour avancer dans le cas où il REDIRECTs'agit d'une URL plus d'un jour à l'avenir, mais cela nécessite ensuite de déconstruire l'URL retournée et de l'ajuster STARTà la valeur de date correcte.

Samveen
la source
C'est super, pourquoi? parce que nous avons des faits et des preuves de quand quelqu'un a archivé du contenu et web.archive.org a supprimé le contenu archivé dans le passé. Ce script ci-dessus enregistrerait le contenu archivé. Impressionnant.
DeerSpotter
Il ne télécharge que le fichier principal et non les js, html et css associés.
But
En fait, ce script ne télécharge rien : il montre simplement l'URL la plus proche. Vous pouvez brancher cette URL dans wgetou toute autre page-getteravec les options correctes (notez l' -Ioption pour curl).
Samveen