Wgetで単一のWebページ(背景画像付き)を保存する


73

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


1
まったく同じ行(wget --no-parent --timestamping --convert-links --page-requisites --no-directories --no-host-directories -erobots = off domain.tld)は、実際に参照される背景画像を保存します1.12に更新した後のCSS。マニュアルには、「http urlでは、Wgetは指定されたurlからhtmlまたはcssを取得および解析し、hrefやsrcなどのマークアップ、または「url()」機能を使用して指定されたcss uri値により、ドキュメントが参照するファイルを取得します表記法。」2番目の問題はまだ解決する必要があります
user14124

回答:


106

Wgetのmanページ

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

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

また、robots.txtあなたが追加できない場合-e robots=off


それだけで絶対URLにJSとCSSを書き換えているようだ
グレッグディーン

1
用事、それは私が回避策と答えを更新許可しないのrobots.txtた
グレッグディーン

19
拡張:wget --adjust-extension --span-hosts --convert-links --backup-converted --page-requisites [url]
sam

4
またはそれ以上wget --recursive --no-clobber --page-requisites --html-extension --convert-links --restrict-file-names=windows[url]
ペタ14年

@ {etah:引数を指定してコマンドを実行しました。指定されたもの以外のWebページがダウンロードされます。
ティム

7

このwgetコマンドに--mirrorは、次と同じことを行うオプションがあります。

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

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

wgetただし、最新バージョンを使用していない場合、これを見つけることができなかった可能性があります。


1
これにより、サブURLでWebサイト全体がクロールされる可能性が高い
-4253wyerg4e

2

wgetFirefoxはこれらのファイルをダウンロードに含めるリンクのCSSを解析していないようです。できることをwgetし、ダウンロードしたファイルのCSSまたはJavascriptからリンク抽出をスクリプト化して、見逃したファイルのリストを生成することで、これらの制限を回避できます。次に、wgetそのリンクのリストで2回目の実行を行うと、失われたものは何でも取得できます(-iフラグを使用してURLをリストするファイルを指定します)。

Perlが好きなら、CPANにはCSS :: Parserモジュールがあり、この方法でリンクを簡単に抽出できます。

wget特定のhtmlマークアップ(href/ src)およびcss uris(url())のみを解析して、取得するページの要件を決定していることに注意してください。DOM InspectorやFirebugなどのFirefoxアドオンを使用して、取得していないサードパーティの画像がJavascriptを介して追加されているかどうかを確認することができます。も。


最初の投稿のコメントで述べたように、v1.12で修正されたようです。ただし、他のサーバーにあるイメージを含める方法はまだわかりません。
user14124

うん、CSSを解析するのwget V1.12で新たに追加され、それは変更履歴の一番上にあります:freshmeat.net/urls/376000c9c7a02f7a3592180c2390ff04
いんちきキホーテ

リストにオプション-Hを追加してみてください。--span-hostsの略で、外部ホストからコンテンツをダウンロードできます。
マイケル

2

同様の目的で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

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.