Як: Завантажте сторінку з 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.