Як: Завантажте сторінку з Wayback Machine через визначений інтервал


11

Що я маю на увазі, це завантажувати кожну сторінку, доступну з машини «Backback Machine», протягом визначеного періоду часу та інтервалу. Наприклад, я хочу завантажити кожну сторінку, що була доступна щодня, з Nature.com з січня 2012 року по грудень 2012 року. (Не точно те, що я хочу зробити, але це досить близько - і дає хороший приклад.)

wget не працюватиме через унікальний характер роботи машини Wayback.

Такі інструменти, як завантажувач Wayback Machine, завантажують лише останню версію сторінки, схоже.

Взаємодія з API IA здається життєздатним маршрутом, але я не впевнений, як це буде працювати.

Дякую!


Для цього вам обов'язково потрібно було б написати сценарій. Може, CURL?
— PulseJet

Я думаю, що можна було б написати сценарій і спертися на cURL, але я не знайомий з API Memento, який використовує Інтернет-архів, і не думаю, що я бачив, що він використовується таким чином.
— orlando marinella

Мені потрібно: а) робити декілька сайтів одночасно; б) робити знімок кожного сайту протягом тривалого інтервалу (скажімо, з 1998 по 2001 рік), і в) бути в змозі вказати, скільки знімків я хочу взяти за цей інтервал.
— orlando marinella

Можливий дублікат: superuser.com/questions/828907/…
— PulseJet

Та ж проблема. Вони просто хочуть одну сторінку, здається - документація для завантажувача WB Machine нечітка, працює вона через такий інтервал, чи ні.
— orlando marinella

Відповіді:


5

Форматування waybackURL-адрес полягає в наступному:

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

Ось BASEURLзазвичай http://web.archive.org/web(я кажу, як правило, не впевнений, якщо це єдиний БАЗОВИЙ)

TARGETне пояснює себе (у вашому випадку http://nature.com, чи якусь подібну URL-адресу)

TIMESTAMPце YYYYmmddHHMMssколи було зроблено захоплення (в UTC):

  • YYYY: Рік
  • mm: Місяць (2 цифри - від 01 до 12)
  • dd: День місяця (2 цифри - від 01 до 31)
  • HH: Година (2 цифри - 00 до 23)
  • MM: Хвилина (2 цифри - 00 до 59)
  • ss: Другий (2 цифри - 00 до 59)

У випадку, коли ви запитаєте час зйомки, який не існує, машина зворотного перенаправлення перенаправляє до найближчого захоплення для цієї URL-адреси, чи то в майбутньому, чи в минулому.

Ви можете використовувати цю функцію для отримання кожної щоденної URL-адреси curl -I(HTTP HEAD) для отримання набору 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

Ви отримуєте URL-адреси, найближчі до полудня кожного дня 2012 року. Просто видаліть дублікати та завантажте сторінки.

Примітка. Сценарій вище, можливо, може бути значно вдосконалений, щоб перейти вперед, якщо REDIRECTв майбутньому URL-адреса буде більше ніж 1 день, але тоді вона потребує деконструкції повернутої URL-адреси та коригування STARTдо правильного значення дати.


Це чудово, чому? оскільки у нас є факти та докази того, коли хтось архівував вміст та web.archive.org раніше видаляв архівований контент. Цей вище скрипт дозволить зберегти архівний вміст. Дивовижно.
— DeerSpotter

Однак він завантажує лише основний файл, але не пов'язаний з js, html, css.
— Призначення

Насправді цей сценарій нічого не завантажує : він просто показує найближчу URL-адресу. Ви можете підключити цю URL-адресу до wgetбудь-якої іншої page-getterза допомогою правильних параметрів (зверніть увагу на -Iпараметр curl).
— Самвін

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.