ディレクトリ自体にindex.htmlがない場合にwgetを使用してディレクトリから特定のファイルをダウンロードするにはどうすればよいですか?

ディレクトリ自体にindex.htmlがない場合にwgetを使用してディレクトリから特定のファイルをダウンロードするにはどうすればよいですか?

StackExchangeには同様の質問がたくさんありますが、それらのどれもこの問題を解決しません。

pdfディレクトリ内のすべてのファイルをダウンロードしたい2007http://www3.cs.stonybrook.edu/~algorith/video-lectures/

wgetだから、上記のリンクで提供されているhtmlファイルを解析し、そのディレクトリpdfのファイルに移動するリンクだけに従いたいのです2007

私は成功せず、次を使用しました。

wget -r -A pdf -I /2007 'http://www3.cs.stonybrook.edu/~algorith/video-lectures/'

上記の方法がうまくいかない理由を説明できますか?

ベストアンサー1

Anthonが指摘したように、この-Iオプションは機能しません。そのように。ただし、参照ポイント、つまり~algorith/video-lectures/ファイルのリストがあるため、いくつかのオプションがあります。 1つは、別のツールを使用してインデックスを解析し、wgetを再実行することです。もう一つは使用することです--accept-regex:それはacceptと一致します完全なURL

男性の場合:

--accept-regex urlregex
--reject-regex urlregex
    Specify a regular expression to accept or reject the complete URL.

これにより、目的のタスクが実行されます。

wget -r -nd -A pdf --accept-regex "2007/.*\.pdf" 'http://www3.cs.stonybrook.edu/~algorith/video-lectures/'

-nd本当にこれらのディレクトリが必要な場合は削除してください。


編集(コメント処理のため)

正規表現の受け入れと受け入れ

説明するのは少し面倒ですが、試してみましょう。

まず、本当にマニュアルを読みたい場合はを使用してくださいinfoman(GNU wgetから) - (簡単に見落とされます):

SEE ALSO
   This is not the complete manual for GNU Wget.  For more complete information,
   including more detailed explanations of some of the options, and a number of
   commands available for use with .wgetrc files and the -e option, see the GNU
   Info entry for wget.

この場合:

$ info wget "Following Links" "Types of Files"

またはオンライン

ここで私たちは強調点を見つけます:

最後に、受け入れ/拒否リストが一致することは注目に値します。二重ダウンロードしたファイルの場合:一度URLのファイル名部分に基づいてファイルを最初にダウンロードする必要があるかどうかを決定します。それから、承認、ダウンロードが成功したときにローカルファイル名を承認/拒否リストと比較して、削除するかどうかを決定します。

また、その根拠については次のように説明します。

  1. .htmそして.htmlファイルはいつも承諾/拒否規則に関係なくダウンロードします。
  2. 削除する必要があります後ろにリンクがダウンロードされ検査されます(承認/拒否リストと一致する場合)。

したがって、HTMLファイルは常にダウンロードされます。ダウンロード後はファイル名のみに基づいてマッチングが行われます。

これがどれほど役に立つのかよくわかりません。情報ページを読むと、より明確になります。ここで鶏と卵のようなものを混ぜるのは少し複雑です。

おすすめ記事