複数のPDF文書へのハイパーリンクがあるWebページにあるとします。そのPDFをダウンロードしたいです。これらの文書のリストを(とにかくls
)入手してから、またはwget
を使用してダウンロードする文書をよりよく選択する方法はありますかcurl
?
ベストアンサー1
lynx
または、(テキストモードのWebブラウザ)を使用してlinks
Webページからリンクリストをダウンロードして表示し、それをパイプしてgrep
PDFリンクのみを抽出することもできます。たとえば、
URL='https://www.example.com/files/'
lynx -dump -listonly -nonumbers "$URL" | grep -i '\.pdf$'
"$URL"
注:特にURLにスペースまたはシェルメタ文字(URLでよく使用される文字やなど;
)が含まれる場合は、二重引用符が重要です。&
頭痛を和らげてくださいいつもURLを含むURL文字列と変数を使用するときに引用します。実際には、URLを含めるかどうかにかかわらず、変数を使用するときに二重引用符を使用することはほとんど常に良い考えです。スペースやその他の特殊文字が原因でシェルスクリプトが停止するのはなぜですか?)。
その後、grep
出力をファイルにリダイレクトし、テキストエディタで編集して興味のないPDFファイルを削除し、wget
(-i
)--input-file=file
オプションを使用してファイルのすべてのURLをダウンロードできます。または、wget
一度にすべてを使用するか、手動でダウンロードすることもできますcurl
。
ところで、wget
サイトミラーリングのための()オプションも-m
あり、ダウンロードされるコンテンツを正確に制御するためのさまざまなオプションもあります(例えば、サフィックスやいくつかのglobに似たパターンに一致するファイルを許可または拒否し、--mirror
-A
-R
-A pdf
-A '*.pdf'
--accept-regex
--reject-regex
正規表現をペアで連結する)など)。同じもの) wget が他のサイトへのリンクをたどるかどうかを制御します。どの他のサイト)、親ディレクトリ、またはサブディレクトリへのリンクをたどるかどうか(およびいくつかのレベルの深さ)など、多くのオプションがあり、オプションの組み合わせ間でより多くの対話があるため、すぐにマスターできることを期待しないでください。