web-dev-qa-db-ja.com

wgetを使用してウェブサイトと外部サイトの最初のレベルからのすべてをミラーリングする

特定のWebサイト(その特定のドメイン内のすべてのページ)を、そのWebサイトがリンクしているすべてのページ(サイト全体ではない)をミラーリングする必要があります。

私はこれを行う方法について混乱しています

wget -r --level=inf(または他のバリアント)はサイトをミラーリングします。

wget -r -H --level=1は(すべてのドメインからの)すべてのリンクを最初のレベルに取得します。

メインサイト全体と1つのレベルを外部サイトに深く浸透させるために、これらをどのように組み合わせることができるかについて、誰もがアイデアを持っています。私は午後中ずっとマニュアルに頭をぶつけてきました。

ありがとう

5
lobsterboy

残念ながら、これはwgetでは不可能です(そしてこれを-H -l 1で解決しようとしても、期待したことはできません)。必要なのは HTTrack です。

httrack --ext-depth=1 http://example.com

これは、httrack %e1 http://example.comと略記することもできます。 HTTrackは、0ではなく1から始まるレベルをカウントするため、深さを増やさない限り、外部ページにあるリンクをたどらないことに注意してください。

6
bug

組み合わせを使用しますwget -m -k -K -p http://example.com && wget -r -k -K -H -N -l 1 http://example.com

2つのコマンドについて:wget -m -k -K -p http://example.comはそれをミラーリングし(-m = -r --level = inf -N)、リンクをローカルミラーに変換し(-k)、変換される前に元のファイルをバックアップし(-K)、すべての前提条件をダウンロードします。ミラーの適切な表示(-p)。

その後、2番目のコマンドwget -r -k -K -H -N -l 1 http://example.comは基本的に同じことを行いますが、すべてのホストにまたがる1つのレベルに対してのみ実行され、タイムスタンプを-Nでチェックするため、同じファイルを再度ダウンロードすることはありません。 -pオプションはダウンロードできるので、ここには含めませんでした...

4
p.vitzliputzli