Nasıl yapılır: Belirli bir aralıkta Wayback Machine'den bir sayfa indirme


11

Demek istediğim, Wayback Machine'de bulunan her sayfayı belirli bir süre ve aralıkta indirmek. Örneğin, her gün mevcut olan her sayfayı Ocak 2012'den Aralık 2012'ye kadar nature.com'dan indirmek istiyorum.

wget, ne yazık ki Wayback makinesinin nasıl çalıştığının eşsiz doğası nedeniyle çalışmaz.

Wayback Machine downloader gibi araçlar sadece sayfanın en son sürümünü indiriyor gibi görünüyor.

IA API ile etkileşim geçerli bir rota gibi görünüyor, ancak bunun nasıl çalışacağından emin değilim.

Teşekkürler!


Bunun için kesinlikle bir senaryo yazmanız gerekir. Belki cURL?
PulseJet

Ben bir senaryo yazmak ve cURL yalın mümkün olacağını düşünüyorum, ama Internet Arşiv'in kullandığı Memento API aşina değilim ve bu şekilde kullandığımı görmüyorum.
orlando marinella

Ben bir) Birden fazla site aynı anda yapmak, b) uzun bir aralık (örneğin, 1998-2001) her sitenin bir anlık görüntü kapmak ve c) bu aralık üzerinde kaç anlık görüntü almak istiyorum belirtebilirsiniz.
orlando marinella


Aynı sorun. Sadece bir sayfa istiyorlar, öyle görünüyor - WB Makinesi indiricisinin belgeleri böyle bir aralıkta çalışıp çalışmadığı belirsiz.
orlando marinella

Yanıtlar:


5

Yolu waybackaşağıdaki gibi biçimlendirilir URL'ler şunlardır:

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

İşte BASEURLgenellikle http://web.archive.org/web(genellikle tek BASEURL olup olmadığından emin değilim diyorum)

TARGETaçıklayıcıdır (sizin durumunuzda http://nature.comveya benzer bir URL'de)

TIMESTAMPolduğu YYYYmmddHHMMssyakalama (UTC olarak) yapıldığı:

  • YYYY: Yıl
  • mm: Ay (2 basamak - 01 ila 12)
  • dd: Ayın günü (2 haneli - 01 ila 31)
  • HH: Saat (2 haneli - 00-23)
  • MM: Dakika (2 haneli - 00-59)
  • ss: İkinci (2 haneli - 00-59)

Var olmayan bir yakalama süresi istemeniz durumunda, geri dönüş makinesi, gelecekte veya geçmişte olsun, bu URL için en yakın yakalamaya yönlendirir.

URL kümesini almak için curl -I(HTTP HEAD) kullanarak her günlük URL'yi almak için bu özelliği kullanabilirsiniz :

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

Bu, 2012'nin her gününde öğlene en yakın URL'leri alır. Yalnızca kopyaları kaldırın ve sayfaları indirin.

Not: Yukarıdaki Komut dosyası REDIRECT, gelecekte 1 günden fazla bir URL olması durumunda ileri atlamak için büyük ölçüde geliştirilebilir , ancak daha sonra döndürülen URL'nin yapısını çözüp STARTdoğru tarih değerine ayarlanmasını gerektirir .


Bu harika, neden? çünkü birisinin içeriği ve web.archive.org'un geçmişte arşivlenen içeriği ne zaman kaldırdığına dair kanıtlarımız ve kanıtlarımız var. Yukarıdaki bu komut dosyası arşivlenmiş içeriği kaydeder. Muhteşem.
Mart'ta DeerSpotter

Sadece ana dosyayı indirir ve js, html, css ile ilgili değildir.
Amaç

Aslında bu komut dosyası hiçbir şey indirmez : Sadece en yakın URL'yi gösterir. Bu URL'yi doğru seçeneklerle wgetveya başka bir URL'ye page-getterbağlayabilirsiniz ( -Iseçeneğe dikkat edin curl).
Samveen

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.