Cara: Unduh halaman dari Mesin Wayback selama interval yang ditentukan

11

Yang saya maksud adalah mengunduh setiap halaman yang tersedia dari Wayback Machine selama periode waktu dan interval yang ditentukan. Misalnya, saya ingin mengunduh setiap halaman yang tersedia dari setiap hari dari nature.com dari Januari 2012 hingga Desember 2012. (Tidak persis yang ingin saya lakukan, tetapi cukup dekat - dan memberikan contoh yang baik.)

sayangnya, wget tidak akan berfungsi karena sifat unik cara kerja mesin Wayback.

Alat-alat seperti pengunduh Wayback Machine hanya mengunduh versi halaman terbaru, tampaknya.

Berinteraksi dengan IA API sepertinya merupakan rute yang layak, tetapi saya tidak yakin bagaimana cara kerjanya.

Terima kasih!

orlando marinella
sumber
Anda pasti perlu menulis skrip untuk ini. Mungkin CURL?
PulseJet
Saya pikir mungkin untuk menulis skrip dan bersandar pada CURL, tapi saya tidak terbiasa dengan Memento API yang digunakan Internet Archive, dan jangan berpikir saya pernah melihatnya menggunakan cara ini.
orlando marinella
Saya perlu a) Melakukan beberapa situs sekaligus, b) mengambil snapshot dari setiap situs dalam interval yang panjang (katakanlah, 1998 hingga 2001), dan c) dapat menentukan berapa banyak foto yang ingin saya ambil dalam interval itu.
orlando marinella
Kemungkinan rangkap: superuser.com/questions/828907/…
PulseJet
Permasalahan yang sama. Mereka hanya menginginkan satu halaman, sepertinya - dokumentasi untuk pengunduh Mesin WB tidak jelas apakah itu bekerja pada interval seperti itu, atau tidak.
orlando marinella

Jawaban:

5

Cara waybackURL diformat adalah sebagai berikut:

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

Ini BASEURLbiasanya http://web.archive.org/web(saya katakan biasanya karena saya tidak yakin apakah itu satu-satunya BASEURL)

TARGETcukup jelas (dalam kasus Anda http://nature.com, atau URL serupa)

TIMESTAMPadalah YYYYmmddHHMMsssaat penangkapan dilakukan (dalam UTC):

  • YYYY: Tahun
  • mm: Bulan (2 digit - 01 hingga 12)
  • dd: Hari dalam sebulan (2 digit - 01 hingga 31)
  • HH: Jam (2 digit - 00 hingga 23)
  • MM: Menit (2 digit - 00 hingga 59)
  • ss: Kedua (2 digit - 00 hingga 59)

Jika Anda meminta waktu penangkapan yang tidak ada, mesin wayback mengalihkan ke tangkapan terdekat untuk URL itu, apakah di masa depan atau di masa lalu.

Anda dapat menggunakan fitur itu untuk mendapatkan setiap URL harian menggunakan curl -I(HTTP HEAD) untuk mendapatkan set 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

Ini memberi Anda URL yang paling dekat dengan siang hari pada setiap hari 2012. Cukup hapus duplikatnya, dan, dan unduh halaman-halamannya.

Catatan: Skrip di atas mungkin dapat sangat ditingkatkan untuk melompat maju jika REDIRECTitu untuk URL lebih dari 1 hari di masa depan, tetapi kemudian membutuhkan mendekonstruksi URL yang dikembalikan, dan menyesuaikan STARTdengan nilai tanggal yang benar.

Samveen
sumber
Ini bagus, mengapa? karena kami memiliki fakta dan bukti ketika seseorang mengarsipkan konten dan web.archive.org telah menghapus konten yang diarsipkan di masa lalu. Script di atas akan menyimpan konten yang diarsipkan. Luar biasa.
DeerSpotter
Itu hanya mengunduh file utama, dan tidak terkait js, html, css.
Tujuan
Sebenarnya skrip ini tidak mengunduh apa pun : Itu hanya menunjukkan URL terdekat. Anda dapat menyambungkan URL itu ke wgetatau yang lain page-getterdengan opsi yang benar (perhatikan -Iopsi untuk curl).
Samveen