कैसे करें: निर्दिष्ट अंतराल पर वेबैक मशीन से एक पृष्ठ डाउनलोड करें


11

मेरा मतलब है कि एक निश्चित समय अवधि और अंतराल पर वेबैक मशीन से उपलब्ध प्रत्येक पृष्ठ को डाउनलोड करना है। उदाहरण के लिए, मैं प्रकृति के प्रत्येक पृष्ठ से 2012 से जनवरी से दिसंबर 2012 तक प्रत्येक दिन डाउनलोड करना चाहता हूं। (ठीक-ठीक यह नहीं है कि मैं क्या करना चाहता हूं, लेकिन यह काफी करीब है - और एक अच्छा उदाहरण प्रदान करता है।)

वेक मशीन कैसे काम करती है, इसके अनूठे स्वरूप के कारण wget काम नहीं करेगा।

वेबैक मशीन डाउनलोडर जैसे उपकरण केवल पृष्ठ के सबसे हाल के संस्करण को डाउनलोड करते हैं, ऐसा लगता है।

आईए एपीआई के साथ बातचीत एक व्यवहार्य मार्ग की तरह लगता है, लेकिन मुझे यकीन नहीं है कि यह कैसे काम करेगा।

धन्यवाद!


इसके लिए आपको निश्चित रूप से एक स्क्रिप्ट लिखने की आवश्यकता होगी। शायद CURL?
पल्सजेट

मुझे लगता है कि यह एक स्क्रिप्ट लिखना और cURL पर दुबला होना संभव होगा, लेकिन मैं मेमेंटो एपीआई से अपरिचित हूं जो इंटरनेट आर्काइव का उपयोग करता है, और मुझे नहीं लगता कि मैंने इसे इस तरह से इस्तेमाल किया है।
ऑरलैंडो मेरीनेला

मुझे एक की आवश्यकता है) एक बार में कई साइटें करें, बी) एक लंबे अंतराल पर प्रत्येक साइट का स्नैपशॉट हड़प लें (जैसे, 1998 से 2001 तक), और सी) यह निर्दिष्ट करने में सक्षम हों कि मैं उस अंतराल पर कितने स्नैपशॉट लेना चाहता हूं।
ऑरलैंडो मेरीनेला

संभावित डुप्लिकेट: superuser.com/questions/828907/…
पल्सजेट

एक ही समस्या है। वे सिर्फ एक पेज चाहते हैं, ऐसा लगता है - डब्ल्यूबी मशीन डाउनलोडर के लिए प्रलेखन अस्पष्ट है कि क्या यह उस तरह के अंतराल पर काम करता है, या नहीं।
ऑरलैंडो मेरीनेला

जवाबों:


5

जिस तरह से waybackURL स्वरूपित किए गए हैं वे इस प्रकार हैं:

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

यहाँ BASEURLआमतौर पर http://web.archive.org/web(मैं आमतौर पर कहता हूँ कि मैं अनिश्चित हूँ अगर यह एकमात्र आधार है)

TARGETस्व व्याख्यात्मक है (आपके मामले में http://nature.com, या कुछ समान URL)

TIMESTAMPहै YYYYmmddHHMMssजब कब्जा (यूटीसी में) किया गया था:

  • YYYY: साल
  • mm: महीना (2 अंक - 01 से 12)
  • dd: महीने का दिन (2 अंक - 01 से 31)
  • HH: घंटा (2 अंक - 00 से 23)
  • MM: मिनट (2 अंक - 00 से 59)
  • ss: दूसरा (2 अंक - 00 से 59)

यदि आप उस कैप्चर टाइम का अनुरोध करते हैं जो मौजूद नहीं है, तो वेकबैक मशीन उस URL के निकटतम कैप्चर पर पुनर्निर्देश करती है, चाहे वह भविष्य में हो या अतीत में।

आप URL के सेट को प्राप्त करने के लिए प्रत्येक दैनिक URL curl -I(HTTP HEAD) का उपयोग करने के लिए उस सुविधा का उपयोग कर सकते हैं:

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

यह आपको 2012 के प्रत्येक दिन दोपहर के करीब आने वाले URL प्राप्त करता है। बस डुप्लिकेट हटा दें, और, और पेज डाउनलोड करें।

नोट: उपरोक्त स्क्रिप्ट को संभवतः REDIRECTभविष्य में 1 दिन से अधिक URL के लिए आगे बढ़ने के लिए बहुत बेहतर बनाया जा सकता है , लेकिन फिर उसे लौटाए गए URL को डिकंस्ट्रक्ट STARTकरने और सही तिथि मान को समायोजित करने की आवश्यकता होती है ।


यह महान है, क्यों? क्योंकि हमारे पास तथ्य और सबूत हैं जब किसी ने सामग्री को संग्रहीत किया है और web.archive.org ने अतीत में संग्रहीत सामग्री को हटा दिया है। ऊपर दी गई यह स्क्रिप्ट संग्रहीत सामग्री को सहेजेगी। बहुत बढ़िया।
DeerSpotter

यह केवल मुख्य फ़ाइल को डाउनलोड करता है, और संबंधित js, html, css नहीं।
पर्पस

वास्तव में यह स्क्रिप्ट कुछ भी डाउनलोड नहीं करता है : यह सिर्फ निकटतम URL दिखाता है। आप सही विकल्प के साथ उस URL को wgetया किसी अन्य में प्लग कर सकते page-getterहैं ( -Iविकल्प को नोटिस करें curl)।
सम्वेन

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.