Cách: Tải xuống một trang từ Wayback Machine trong một khoảng thời gian được chỉ định


11

Ý tôi là tải xuống từng trang có sẵn từ Wayback Machine trong một khoảng thời gian và khoảng thời gian xác định. Ví dụ: tôi muốn tải xuống từng trang có sẵn từ mỗi ngày từ thiên nhiên.com từ tháng 1 năm 2012 đến tháng 12 năm 2012. (Không chính xác những gì tôi muốn làm, nhưng nó đủ gần - và cung cấp một ví dụ hay.)

wget sẽ không hoạt động do tính chất độc đáo của cách máy Wayback hoạt động, thật không may.

Các công cụ như trình tải xuống Wayback Machine chỉ tải xuống phiên bản mới nhất của trang.

Tương tác với API IA có vẻ như là một tuyến khả thi, nhưng tôi không chắc nó sẽ hoạt động như thế nào.

Cảm ơn!


Bạn chắc chắn sẽ cần phải viết một kịch bản cho việc này. Có lẽ là CURL?
PulseJet

Tôi nghĩ rằng có thể viết một tập lệnh và dựa vào cURL, nhưng tôi không quen với API Memento mà Lưu trữ Internet sử dụng và không nghĩ rằng tôi đã thấy nó được sử dụng theo cách này.
orlando marinella

Tôi cần phải a) Thực hiện nhiều trang web cùng một lúc, b) lấy một ảnh chụp nhanh của mỗi trang web trong một khoảng thời gian dài (giả sử, 1998 đến 2001) và c) có thể chỉ định số lượng ảnh chụp tôi muốn thực hiện trong khoảng thời gian đó.
orlando marinella


Vấn đề tương tự. Có vẻ như họ chỉ muốn một trang - tài liệu dành cho trình tải xuống của WB Machine rất mơ hồ liệu nó có hoạt động trong một khoảng như thế hay không.
orlando marinella

Câu trả lời:


5

Cách waybackđịnh dạng URL như sau:

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

Đây BASEURLthường là http://web.archive.org/web(tôi thường nói là tôi không chắc chắn nếu đó là BASEURL duy nhất)

TARGETlà tự giải thích (trong trường hợp của bạn http://nature.comhoặc một số URL tương tự)

TIMESTAMPYYYYmmddHHMMsskhi việc chụp được thực hiện (bằng UTC):

  • YYYY: Năm
  • mm: Tháng (2 chữ số - 01 đến 12)
  • dd: Ngày trong tháng (2 chữ số - 01 đến 31)
  • HH: Giờ (2 chữ số - 00 đến 23)
  • MM: Phút (2 chữ số - 00 đến 59)
  • ss: Thứ hai (2 chữ số - 00 đến 59)

Trong trường hợp bạn yêu cầu thời gian bắt giữ không tồn tại, máy quay ngược lại chuyển hướng đến lần chụp gần nhất cho URL đó, cho dù trong tương lai hay quá khứ.

Bạn có thể sử dụng tính năng đó để nhận từng URL hàng ngày bằng cách sử dụng curl -I(HTTP HEAD) để nhận bộ 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

Điều này mang lại cho bạn các URL gần nhất vào buổi trưa mỗi ngày năm 2012. Chỉ cần xóa các bản sao và tải xuống các trang.

Lưu ý: Tập lệnh ở trên có thể được cải thiện rất nhiều để nhảy về phía trước trong trường hợp REDIRECTURL dành cho hơn 1 ngày trong tương lai, nhưng sau đó nó yêu cầu giải mã URL được trả về và điều chỉnh STARTtheo giá trị ngày chính xác.


Điều này thật tuyệt, tại sao? bởi vì chúng tôi có sự thật và bằng chứng về thời điểm ai đó lưu trữ nội dung và web.archive.org đã xóa nội dung lưu trữ trong quá khứ. Kịch bản này ở trên sẽ lưu nội dung lưu trữ. Tuyệt vời.
DeerSpotter

Nó chỉ tải xuống tệp chính, và không liên quan js, html, css.
Mục đích

Trên thực tế, tập lệnh này không tải xuống bất cứ thứ gì : Nó chỉ hiển thị URL gần nhất. Bạn có thể cắm URL đó vào wgethoặc bất kỳ URL nào khác page-gettervới các tùy chọn chính xác (chú ý -Itùy chọn này curl).
Samveen

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.