18

フォルダ構造だけが欲しいのですが、wgetでどうすればいいのかわかりませんでした。代わりに私はこれを使用しています:

wget -R pdf、css、gif、txt、png -np -r http://example.com

これは-Rの後にすべてのファイルを拒否するはずですが、wgetはまだファイルをダウンロードしてから、それを削除しているようです。

フォルダ構造を取得するためのより良い方法はありますか?

TTP要求が送信され、応答を待機しています... 200 OK長さ:136796(134K)[application / x-download]保存先:「example.com/file.pdf」</ p>

100%[=====================================>] 136,796 853K / s in 0.2s

2012-10-03 03:51:41(853 KB / s)-「example.com/file.pdf」が保存されました[136796/136796]

拒否する必要があるため、example.com/file.pdfを削除します。

構造を教えてくれるクライアント向けだと思っていた方もいらっしゃると思いますが、IT担当者がやらなくてはいけないので面倒なので、自分で手に入れたかったのです。

4

1 に答える 1

28

それがどのように機能するようwgetに設計されたかのようです。再帰的なダウンロードを実行する場合、拒否リストに一致する非リーフファイルは引き続きダウンロードされるため、リンク用に収集してから削除できます。

コード内のコメント(recur.c)から:

--delete-afterが指定されているか、ハイパーリンクを取得できるように、これ以外の方法で拒否された(たとえば、-Rによって)HTMLファイルをロードしました。いずれの場合も、ローカルファイルを削除します。

過去のプロジェクトでは、認証されたサイトをミラーリングする必要があり、それらのURLを拒否することを意図した場合でも、ログアウトwgetページにアクセスし続けるという問題が発生しました。の動作を変更するオプションが見つかりませんでした。wget

最終的に解決したのは、独自のバージョンのをダウンロード、ハッキング、ビルドすることでしwgetた。これにはおそらくもっと洗練されたアプローチがありますが、私たちが使用した簡単な修正は、download_child_p()ルーチンの最後に次のルールを追加することでした(要件に一致するように変更されました)。

  /* Extra rules */
  if (match_tail(url, ".pdf", 0)) goto out;
  if (match_tail(url, ".css", 0)) goto out;
  if (match_tail(url, ".gif", 0)) goto out;
  if (match_tail(url, ".txt", 0)) goto out;
  if (match_tail(url, ".png", 0)) goto out;
  /* --- end extra rules --- */

  /* The URL has passed all the tests.  It can be placed in the
     download queue. */
  DEBUGP (("Decided to load it.\n"));

  return 1;

 out:
  DEBUGP (("Decided NOT to load it.\n"));

  return 0;
}
于 2012-10-03T08:41:38.790 に答える