Como fazer o download de uma página do Wayback Machine em um intervalo especificado


11

O que quero dizer é baixar cada página disponível da Wayback Machine por um período e intervalo de tempo especificados. Por exemplo, quero fazer o download de cada página disponível de cada dia no site nature.com de janeiro de 2012 a dezembro de 2012. (Não é exatamente o que eu quero fazer, mas é perto o suficiente - e é um bom exemplo).

O wget não funcionará devido à natureza única de como a máquina Wayback funciona, infelizmente.

Parece que ferramentas como o downloader do Wayback Machine baixam apenas a versão mais recente da página.

Interagir com a API da IA ​​parece uma rota viável, mas não tenho certeza de como isso funcionaria.

Obrigado!


Você definitivamente precisaria escrever um script para isso. Talvez cURL?
— pulsejet

Eu acho que seria possível escrever um script e usar o cURL, mas não estou familiarizado com a API do Memento que o Internet Archive usa e não acho que o tenha visto dessa maneira.
— precisa

Eu preciso: a) Fazer vários sites de uma só vez, b) capturar um instantâneo de cada site por um longo intervalo (por exemplo, 1998 a 2001) ec) ser capaz de especificar quantos instantâneos eu quero tirar nesse intervalo.
— orlando Marinella


Mesmo problema. Parece que eles querem apenas uma página - a documentação para o downloader da WB Machine é vaga, quer funcione por um intervalo como esse ou não.
— precisa

Respostas:


5

A forma como os waybackURLs são formatados é a seguinte:

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

Aqui BASEURLestá geralmente http://web.archive.org/web(eu digo geralmente porque não tenho certeza se é o único BASEURL)

TARGETé auto-explicativo (no seu caso http://nature.com, ou algum URL semelhante)

TIMESTAMPé YYYYmmddHHMMssquando a captura foi feita (no UTC):

  • YYYY: Ano
  • mm: Mês (2 dígitos - 01 a 12)
  • dd: Dia do mês (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)

Caso você solicite um tempo de captura que não existe, a máquina de wayback será redirecionada para a captura mais próxima desse URL, seja no futuro ou no passado.

Você pode usar esse recurso para obter cada URL diário usando curl -I(HTTP HEAD) para obter o conjunto de URLs:

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

Isso fornece os URLs mais próximos ao meio-dia de cada dia de 2012. Remova as duplicatas e faça o download das páginas.

Nota: O script acima provavelmente pode ser bastante aprimorado para avançar caso REDIRECTseja para um URL mais de 1 dia no futuro, mas requer desconstrução do URL retornado e ajuste STARTpara o valor correto da data.


Isso é ótimo, por quê? porque temos fatos e provas de quando alguém arquivou o conteúdo e o web.archive.org removeu o conteúdo arquivado no passado. Este script acima salvaria o conteúdo arquivado. Impressionante.
— DeerSpotter

Porém, ele baixa apenas o arquivo principal, e não js, ​​html, css.
— Finalidade

Na verdade, este script não baixa nada : apenas mostra o URL mais próximo. Você pode conectar esse URL wgetou qualquer outro page-gettercom as opções corretas (observe a -Iopção curl).
— Samveen 5/03

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.