私はwgetコマンドを使用しようとしています:
wget -p http://www.example.com
メインページ上のすべてのファイルを取得します。一部のWebサイトでは機能しますが、ほとんどの場合、index.htmlのみをダウンロードします。 wget -rコマンドを試しましたが、機能しません。ページ上のすべてのファイルを取得する方法を知っている人、または単にページ上のファイルと対応するURLのリストを教えてくれますか?
WgetはWebサイト全体をダウンロードすることもできます。ただし、これによりサーバーに大きな負荷がかかる可能性があるため、wgetはrobots.txtファイルに従います。
wget -r -p http://www.example.com
-pパラメーターは、イメージを含むすべてのファイルを含めるようにwgetに指示します。これは、すべてのHTMLファイルがどのように見えるべきかを示すことを意味します。
それでは、wgetにrobots.txtファイルを従わせたくない場合はどうでしょうか?次のように、コマンドに-e robots = offを追加するだけです。
wget -r -p -e robots=off http://www.example.com
多くのサイトではサイト全体をダウンロードできないため、ブラウザの身元を確認します。これを回避するには、上で説明したように-U mozillaを使用します。
wget -r -p -e robots=off -U mozilla http://www.example.com
多くのウェブサイト所有者は、サイト全体をダウンロードしているという事実を好まないでしょう。サーバーは、大量のファイルをダウンロードしていることを認識すると、自動的にブラックリストに追加します。これを回避する方法は、ダウンロードするたびに数秒待つことです。 wgetを使用してこれを行う方法は、-wait = Xを含めることです(Xは秒数です)。
パラメーター:--random-waitを使用して、wgetが待機する秒数をランダムに選択できるようにすることもできます。これをコマンドに含めるには:
wget --random-wait -r -p -e robots=off -U mozilla http://www.example.com
まず、質問を明確にするために、index.html
に加えて、そのページのすべての必要な部分(画像など)をダウンロードすることを目的としています。 -p
オプションは--page-requisites
と同等です。
ページの必要条件が常にダウンロードされるとは限らないのは、多くの場合、元のページとは異なるドメイン(CDNなど)でホストされているためです。デフォルトでは、 wgetは他のホストへのアクセスを拒否します であるため、--span-hosts
オプションでホストスパニングを有効にするが必要です。
wget --page-requisites --span-hosts 'http://www.Amazon.com/'
index.html
をロードし、すべてのページ要件をローカルバージョンからロードできるようにする必要がある場合は、--convert-links
オプションを追加して、img
src属性のURLを追加する必要があります。 (たとえば)ローカルバージョンを指す相対URLに書き換えられます。
オプションで、--no-Host-directories
オプションを追加してすべてのファイルを単一の「ホスト」ディレクトリに保存するか、--no-directories
オプションを追加してすべてのファイルを単一のフラットディレクトリに保存することもできます。
--no-directories
を使用すると、多くのファイルが現在のディレクトリにダウンロードされるため、--directory-prefix
を使用して、出力ファイルのフォルダー名を指定することをお勧めします。
wget --page-requisites --span-hosts --convert-links --no-directories --directory-prefix=output 'http://www.Amazon.com/'
指定したリンクはホームページまたは/index.htmlです。したがって、index.htmlページのみを取得していることは明らかです。実際のダウンロード、たとえば「test.Zip」ファイルの場合、最後に正確なファイル名を追加する必要があります。たとえば、次のリンクを使用してtest.Zipファイルをダウンロードします。
wget -p domainname.com/test.Zip
wget --mirror
を使用して完全なWebサイトをダウンロードする
以下は、完全なWebサイトをダウンロードしてローカルで表示できるようにする場合に実行するコマンドラインです。
wget --mirror -p --convert-links -P ./LOCAL-DIR http://www.example.com
-mirror:ミラーリングに適したオプションをオンにします。
-p:特定のHTMLページを適切に表示するために必要なすべてのファイルをダウンロードします。
-convert-links:ダウンロード後、ドキュメント内のリンクをローカル表示用に変換します。
-P ./LOCAL-DIR:すべてのファイルとディレクトリを指定したディレクトリに保存します
wget -r -A
を使用して特定のファイルタイプのみをダウンロードする
これは次の状況で使用できます。
ウェブサイトからすべての画像をダウンロードし、
Webサイトからすべてのビデオをダウンロードし、
wget -r -A.pdf http://example.com/test.pdf
もう1つの問題は、ミラーリングしているサイトがwww
なしのリンクを使用していることです。あなたが指定した場合
wget -p -r http://www.example.com
リンクされた(インターン)ページは「異なる」ドメインからのものであるため、ダウンロードされません。その場合は、次を使用します
wget -p -r http://example.com
代わりに(www
なし)。
私はこのスレッドが古いことを知っていますが、リテッシュが言及していることを試してください:
--no-cookies
それは私のために働いた!
CFSv2モデルのファイルのダウンロードでも同じ問題が発生しました。上記の回答を混合して解決しましたが、パラメータ--no-check-certificate
を追加しました
wget -nH --cut-dirs=2 -p -e robots=off --random-wait -c -r -l 1 -A "flxf*.grb2" -U Mozilla --no-check-certificate https://nomads.ncdc.noaa.gov/modeldata/cfsv2_forecast_6-hourly_9mon_flxf/2018/201801/20180101/2018010100/
ここでは、使用されるすべてのパラメーターの簡単な説明があります。詳細については、 GNU wget 1.2 Manual
-nH
と同等の--no-Host-directories
:ホスト接頭辞付きディレクトリの生成を無効にします。この場合、ディレクトリ./https://nomads.ncdc.noaa.gov/
の生成を避けてください
--cut-dirs=<number>
:ディレクトリコンポーネントを無視します。この場合、ディレクトリ./modeldata/cfsv2_forecast_6-hourly_9mon_flxf/
の生成を避けてください
-p
と同等の--page-requisites
:このオプションにより、Wgetは、特定のHTMLページを適切に表示するために必要なすべてのファイルをダウンロードします。これには、インライン画像、サウンド、参照スタイルシートなどが含まれます。
-e robots=off
:robots.txtファイルのダウンロードを避ける
-random-wait
:--wait
オプションを使用して指定された場合、リクエスト間の時間が0.5〜1.5 *秒の間で変化します。
-c
--continue
と同等:部分的にダウンロードされたファイルの取得を続けます。
-r
と同等の--recursive
:再帰的取得を有効にします。デフォルトの最大深度は5です
-l <depth>
は--level <depth>
と同等:再帰の最大深度レベルを指定します
-A <acclist>
と同等の--accept <acclist>
:受け入れる名前のサフィックスまたはパターンのコンマ区切りリストを指定します。
-U <agent-string>
と同等の--user-agent=<agent-string>
:HTTPプロトコルにより、クライアントはUser-Agentヘッダーフィールドを使用して自身を識別できます。これにより、通常統計目的またはプロトコル違反のトレースのために、WWWソフトウェアを区別できます。 Wgetは通常、Wgetの現在のバージョン番号であるバージョンを「Wget/version」として識別します。
--no-check-certificate
:サーバー証明書を利用可能な認証局と照合しないでください。
wget manual でindex.html
を探すと、オプション--default-page=name
を見つけることができますindex.html
デフォルトでは。たとえば、index.php
に変更できます。
--default-page=index.php
index.html
のみを取得し、そのファイルがバイナリデータのみを含むように見える場合(つまり、読み取り可能なテキストはなく、制御文字のみ)、サイトはおそらくgzip
圧縮を使用してデータを送信しています。
これを確認するには、cat index.html | gunzip
を実行して、読み取り可能なHTMLを出力するかどうかを確認します。
この場合、wget
の再帰機能(-r
)は機能しません。 wget
がgzip圧縮データを処理するための パッチ がありますが、まだ標準リリースには含まれていないようです。