web-dev-qa-db-ja.com

Wgetを使って(背景画像を含む)単一のWebページを保存する

参考のために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

69
user14124

Wgetのmanページ から:

実際、1つのページとそのすべての必要条件(それらが別々のWebサイトに存在する場合でも)をダウンロードし、そのロットがローカルで正しく表示されるようにするために、この作者は「-p」に加えていくつかのオプションを使用します。

wget -E -H -k -K -p http://www.example.com/

robots.txtが許可していない場合も-e robots=offを追加します

103
vvo

wgetコマンドはオプション--mirrorを提供します。これは以下と同じことを行います。

$ wget -r -N -l inf --no-remove-listing

ホスト名を含むサイトのディレクトリ階層全体を作成するために-xを投入することもできます。

最新バージョンのwgetを使用していない場合は、これを見つけることができなかったかもしれません。

7
Ernie Dunbar

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を介して追加されているかどうかを確認することができます。も。

2
quack quixote

私は同様の目的のために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

2
webjay