私はbashを使用するのが初めてで、Webサイトから作業中のサーバーにすべてのファイルをwget
しようとしています。ただし、返されるのはindex.html
ファイルだけです。 15分間実行しましたが、index.htmlファイルがまだダウンロードされていたため、強制終了しました。 index.html
ファイルの後にファイルをダウンロードできますか?
これが私が試しているコードです:
$ wget --no-parent -R index.html -A "Sample" -nd --random-wait \
-r -p -e robots=off -U Mozilla --no-check-certificate \
http://somewebsite.com/hasSamples/Sample0
Sampleで始まるサブディレクトリ内のすべてのファイルをダウンロードしようとしています。解決策を見つけるためにインターネットでかなり検索しましたが、この時点で困惑しています。オプションの正しい組み合わせが見つからなかっただけかもしれませんが、助けていただければ幸いです。これが私のコードの理解です:
--no-parent
は、親ディレクトリを検索しないことを意味します-R index.html
は、index.htmlファイルのダウンロードを拒否することを意味します。「index.html *」も試しましたが、それでもダウンロードされました。-A "Sample"
Sample *のような行為はbashで行う-nd
は、ディレクトリではなくファイルをダウンロードすることを意味します--random-wait
サイトからブラックリストに登録されないようにする-r
再帰的にダウンロード-p
わからない-e robots=off
はrobot.txtファイルを無視しますU Mozilla
は、ユーザーをMozillaのように見せます--no-check-certificate
はウェブサイトに必要です。-Sample *がbashで行うような「Sample」のような動作
私のman wget
の読みではありません:
- -A acclist-acclistを受け入れる
- -R rejlist-拒否リスト
受け入れるか拒否するファイル名のサフィックスまたはパターンのコンマ区切りリストを指定します。ワイルドカード文字*、?、[または]のいずれかがacclistまたはrejlistの要素にある場合、パターンとして扱われることに注意してくださいではなく接尾辞。
したがって、使用法(ワイルドカードなし)はbash glob *.Sample
と同等です。
Wgetはリンクをスキャンすることで機能します。これがおそらくindex.html
をダウンロードしようとしている理由です(その内容が何であるかは、言っていませんが、時間がかかっただけです)。どこかに開始する必要があります。さらに説明すると:URLはnotファイルパスです。あなたはできない「階層foobar
内のすべてのファイルをくれ」と言って、ディレクトリ階層であるかのようにWebサーバーをスキャンします。 foobar
が実際のディレクトリに対応する場合(ファイルパスではなくURLの一部であるため、必ずしもそうである必要はありません)、Webサーバーmay自動生成されたファイルを一覧表示するindex.htmlを提供するように設定し、ファイルシステムを閲覧できるような錯覚を提供します。しかし、これはHTTPプロトコルの一部ではなく、Apacheのようなサーバーでデフォルトで使用されている規則にすぎません。したがって、wget
が行うのはスキャンです。たとえば、index.html
の<a href=
と<img src=
をスキャンするなどです。これらのリンクをたどり、同じことを再帰的に実行します。これが、wgetの「再帰的」動作と呼ばれるものです。リンクを再帰的にスキャンします(繰り返します)、サーバー上のファイルシステムへのアクセス権がなく、サーバーが提供する必要がないためそれに関連する情報が含まれています。
実際の.html
Webページがあり、ロードしてクリックして必要なすべてのものに移動できる場合は、そのアドレスから始めて、-r -np -k -p
だけを使用します。
ブラウザでページに接続するとどうなりますか?
問題なくページを閲覧すると、いくつか欠けているものがあるかもしれません。
ページがブラウザをチェックしている可能性がありますが、Mozillaは正解ではありません。 here からブラウザ文字列の1つ(Mozillaだけでなく文字列全体)を選択し、それが機能するかどうか確認してください。
そうでない場合は、cookieが必要になる可能性があります。wget
を使用してcookieをメインページに接続し、保存してください。次に、これらのCookieでwget
を使用し、ページをダウンロードしてみます。
ミラーリングする場合は、--mirror
オプションを試してください。
何もうまくいかない場合は、接続とページを調べます。 Firefox用のライブhttpヘッダーアドオンは、かなりクールなツールです。ブラウザとWebページ間の通信全体を確認できます。 wgetでその動作を模倣して、探しているものを取得してください。