방법 : 지정된 간격 동안 Wayback Machine에서 페이지 다운로드 충분히 가깝고 좋은 예를 제공합니다). 불행히도

내 말은 Wayback Machine에서 사용 가능한 각 페이지를 지정된 기간 및 간격 동안 다운로드하는 것입니다. 예를 들어, 2012 년 1 월부터 2012 년 12 월까지 nature.com에서 매일 사용 가능한 각 페이지를 다운로드하려고합니다 (정확히하고 싶은 것은 아니지만 충분히 가깝고 좋은 예를 제공합니다).

불행히도 Wayback 시스템 작동 방식의 고유 한 특성으로 인해 wget이 작동하지 않습니다.

Wayback Machine downloader와 같은 도구는 최신 버전의 페이지 만 다운로드하는 것 같습니다.

IA API와의 상호 작용은 실행 가능한 경로처럼 보이지만 어떻게 작동하는지 잘 모르겠습니다.

감사!



답변

방법을 wayback다음과 같이 포맷 된 URL은 다음과 같습니다

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

BASEURL일반적으로 여기 있습니다 http://web.archive.org/web(유일한 BASEURL인지 확실하지 않습니다)

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에 가장 가까운 캡처로 리디렉션합니다.

이 기능을 사용하여 curl -I(HTTP HEAD)를 사용하여 매일 URL 을 가져 와서 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

이렇게하면 2012 년 매일 정오에 가장 가까운 URL이 표시됩니다. 중복을 제거하고 페이지를 다운로드하십시오.

참고 : 위의 스크립트는 앞으로 REDIRECT1 일이 넘는 URL에 대한 경우에 대비하여 크게 향상 될 수 있지만 반환 된 URL을 해체 START하고 올바른 날짜 값으로 조정 해야합니다.


답변

Github에는 루비 젬이 있습니다 : https://github.com/hartator/wayback-machine-downloader


답변