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.