参考のためにWgetを使用して単一のWebページ(再帰的ではなくサイト全体ではない)を保存したいと思います。 Firefoxの「Webページ、完全」とよく似ています。
私の最初の問題は、CSSで指定された背景画像をWgetに保存させることができないことです。背景画像ファイルを保存したとしても、--convert-linksはCSSファイルの背景画像URLをローカルに保存された背景画像を指すように変換するとは思わない。 Firefoxにも同じ問題があります。
私の2番目の問題は、私が保存したいページに別のサーバーでホストされている画像がある場合(広告のように)、これらは含まれないことです。 --span-hostsは以下の行でその問題を解決していないようです。
私は使っています:wget --no-parent --timestamping --convert-links --page-requisites --no-directories --no-Host-directories -erobots=off http://domain.tld/webpage.html
Wgetのmanページ から:
実際、1つのページとそのすべての必要条件(それらが別々のWebサイトに存在する場合でも)をダウンロードし、そのロットがローカルで正しく表示されるようにするために、この作者は「-p」に加えていくつかのオプションを使用します。
wget -E -H -k -K -p http://www.example.com/
robots.txt
が許可していない場合も-e robots=off
を追加します
wget
コマンドはオプション--mirror
を提供します。これは以下と同じことを行います。
$ wget -r -N -l inf --no-remove-listing
ホスト名を含むサイトのディレクトリ階層全体を作成するために-x
を投入することもできます。
最新バージョンのwget
を使用していない場合は、これを見つけることができなかったかもしれません。
wget
とFirefoxは、ダウンロードにそれらのファイルを含めるためのリンクについてCSSを解析していないようです。あなたができることをwget 'し、あなたが逃したファイルのリストを生成するためにダウンロードされたファイルの中のCSSまたはJavascriptからリンク抽出をスクリプト化することによってあなたはそれらの制限を回避することができた。それから、そのリンクのリストでwget
を2回目に実行すると、見逃したものは何でも取り込むことができます(URLをリストするファイルを指定するには-i
フラグを使用してください)。
Perlが好きなら、CPANに CSS :: Parser モジュールがあるので、この方法でリンクを簡単に抽出することができます。
wget
は、どのページを取得する必要があるかを判断するために、特定のhtmlマークアップ(href
/src
)とcss uris(url()
)のみを解析します。 DOM InspectorやFirebugなどのFirefoxアドオンを使用して、入手していないサードパーティの画像がJavascriptを介して追加されているかどうかを確認することができます。も。
私は同様の目的のためにWebtographyを作りました: https://webjay.github.io/webtography/
これはWgetを使用してGitHubアカウントのリポジトリにサイトをプッシュします。
これらの引数を使います。
--user-agent=Webtography
--no-cookies
--timestamping
--recursive
--level=1
--convert-links
--no-parent
--page-requisites
--adjust-extension
--max-redirect=0
--exclude-directories=blog
https://github.com/webjay/webtography/blob/master/lib/wget.js#L15-L26