ウェイバックマシンからスナップショットをダウンロードしますか?


10

ウェイバックマシンからWebサイト全体のスナップショットをダウンロードする方法はありますか?

wgetを使用してWayback Machine(例:)から古いWebサイトを復元できることは承知していますがwget -np -e robots=off --mirror --domains=staticweb.archive.org,web.archive.org http://web.archive.org/web/19970708161549/http://www.slackworks.com/、Wayback Machine Webサイトから直接実行できるかどうか疑問です。


あなたは、常に古き良き行うことができますファイル- >保存
Vidar S. Ramdal

あなたがウェブサイトの各ページのために行われなければならないならば、少し退屈に
聞こえ

を使用してウェブサイト全体を取得wgetするには、さらにいくつかのパラメータが必要になります。たとえば、--recursive --no-clobber --page-requisites --html-extension --convert-linksこれにはCSS、JS、およびもちろん画像が含まれている必要があります。
グウィネス・ルウェリン

回答:


4

利用規約で許可されていないため、Wayback Machineから直接スナップショットをダウンロードすることはできません。

彼らのFAQから:

ウェイバックからサイトをダウンロードできますか?

利用規約では、ウェイバックマシンのユーザーがコレクションからデータをコピーしないことを指定しています。


これは、人々がそうしたくない、そうしないという意味ではありません。
Micheal Johnson、

このセクションがFAQから削除され、次のセクションに置き換えられたことに注目する価値があります:archive.org/about/faqs.php#26。簡単に言うと、Wayback Machineは独自のスナップショットのコピーを提供していません。彼らの言語は、ウェイバックからダウンロードする他のツールが許可されているかどうかについては少しあいまいなようです。
noirscape 2017

9

私は同じ問題に遭遇し、Ruby gemをコーディングしてしまいました。

インストールするには:

$ gem install wayback_machine_downloader

次に、wayback_machine_downloader取得するWebサイトのベースURLをパラメーターとして実行します(例:example.com):

$ wayback_machine_downloader http://example.com

詳細:https : //github.com/hartator/wayback-machine-downloader


よくやった!ただし、これを単一のWebサイトで機能させるためだけにRubyの複雑さ全体をインストールしなければならないのは、私にとっては非常に面倒なwgetことです。
グウィネス・ルウェリン

彼らは港湾労働者のイメージを持っています。私にとってのより大きな問題は、特定の時間範囲を対象とするという彼らの主張が破られていることです。大きくて多くのキャプチャーがあるサイトのキャプチャーをダウンロードしたい場合、これは問題です。
AndyO

1

ウェブアーカイブhttp://waybackdownloader.comからダウンロードできるサービスがあります


3
サイトに関係があるかどうかを開示してください。
jonsca

2
これは、Wayback MachineからWebサイトをダウンロードするためのスクリプトを作成するのに役立つことの1つです。また、利用規約に違反するサービスに課金することもできます。
Micheal Johnson、

1

私が作ったスクリプトをサイト全体をダウンロードします:

waybackmachine.sh
#!/usr/bin/env bash
# Wayback machine downloader
#TODO: Remove redundancy (download only newest files in given time period - not all of them and then write over them)
############################
clear

#Enter domain without http:// and www.
domain="google.com"
#Set matchType to "prefix" if you have multiple subdomains, or "exact" if you want only one page 
matchType="domain"

#Set datefilter to 1 if you want to download data from specific time period
datefilter=0
from="19700101120001" #yyyyMMddhhmmss
to="20000101120001" #yyyyMMddhhmmss

#Set this to 1 if your page has lots of captured pages with ? in url (experimental)
swapurlarguments=0
usersign='&' #sign to replace ? with

##############################################################
# Do not edit after this point
##############################################################
#Getting snapshot list
full="http://web.archive.org/cdx/search/cdx?url="
full+="$domain"
full+="&matchType=$matchType"
    if [ $datefilter = 1 ]
        then
            full+="&from=$from&to=$to"
        fi
full+="&output=json&fl=timestamp,original&fastLatest=true&filter=statuscode:200&collapse=original"  #Form request url

wget $full -O rawlist.json #Get snapshot list to file rawlist.json


#Do parsing and downloading stuff
sed 's/\"//g' rawlist.json  > list.json #Remove " from file for easier processing
rm rawlist.json #Remove unnecessary file
i=0; #Set file counter to 0
numoflines=$(cat list.json | wc -l ) #Fill numoflines with number of files to download
while read line;do # For every file
        rawcurrent="${line:1:${#line}-3}" #Remove brackets from JSON line
    IFS=', ' read -a current <<< "$rawcurrent" #Separate timestamp and url
    timestamp="${current[0]}"
    originalurl="${current[1]}"
    waybackurl="http://web.archive.org/web/$timestamp" 
    waybackurl+="id_/$originalurl" #Form request url
    file_path="$domain/"
    sufix="$(echo $originalurl | grep / | cut -d/ -f2- | cut -d/ -f3-)"
     [[ $sufix = "" ]] && file_path+="index.html" || file_path+="$sufix" #Determine local filename
clear
echo " $i out of $numoflines" #Show progress
echo "$file_path"
mkdir -p -- "${file_path%/*}" && touch -- "$file_path" #Make local file for data to be written
    wget -N $waybackurl -O $file_path #Download actual file
    ((i++))
done < list.json

#If user chose, replace ? with usersign
    if [ $swapurlarguments = 1 ]
        then
            cd $domain
            for i in *; do mv "$i" "`echo $i | sed "s/\?/\$usersign/g"`"; done #Replace ? in filenames with usersign
            find ./ -type f -exec sed -i "s/\?/\$usersign/g" {} \; #Replace ? in files with usersign
        fi

1
回答にリンクの重要なコンテンツを追加することをお勧めします。
穏やかな2015

1
私はスクリプト全体が答えだと思います
lazanet

それは良い試みでしたが、もう機能しないと思います...
グウィネス・ルウェリン

-1

多分あなたはhttp://www.waybackmachinedownloader.comまたはhttp://www.waybackmachinedownloads.comのようなウェイバックマシンダウンローダーを試すことができます

これら2つのWebサイトにはどちらも、スクリプトが機能することを確認するために、アーカイブURLからいくつかのページをスクレイピングする無料のデモがあります。

他のツールはありますが、テストしていなかったため、フィードバックを提供できません。


1
リンクに変更があった場合、リンクのみの回答は役に立たなくなるため、リンクの重要な内容を回答に追加してください。
serenesat
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.