wgetダウンロードスクリプトを最適化する方法

wgetダウンロードスクリプトを最適化する方法

ウェブサイトのコンテンツ

<html>
  <body>
   <a href="http://www.sagar.com/" title="sagar">Sagar</a>
   <a href="http://www.sagarcom/1/" title="sagar1">Sagar Link1</a>
   <a href="http://www.sagar.com/2/song.mp3">Download this</a>
  </body>
</html>

link_source_file.txt上記を含むURL

## Below wget command
wget -r -l1 -H -t1 -nd -N -np -A.mp3 -erobots=off -i link_source_file.txt

-Aで述べた特定の種類のファイルをダウンロードしたいと思います。ここにいるmp3。上記のwgetコマンドはリンクの深さに従います-t1

最初のリンクをたどってファイルをhttp://www.sagar.com/ダウンロードします。index.htmlその後、ファイル形式がないことを発見して.mp3削除しました。index.html

私はwgetが拡張子を持つリンクだけに従い、*.mp3他のリンクに従わないことを望みます。この要件を満たすようにコマンドをどのように調整できますか?

ベストアンサー1

私の考えでは、あなたはできないと思います。最終的に再帰ダウンロードオプションを使用するには、デフォルトでwgetがhtmlファイルでのみ見つけることができる-rリンク(レベル別)を見つける必要があります。-lしたがって、wgetはより多くのhtmlファイルとmp3ファイルへのリンクを見つけるためにhtmlファイルをダウンロードして解析する必要があります。

すでに接続リストを作成している場合は、fgrep ".mp3"mp3ファイルのみを含む新しいリストを作成し、それをwgetのlink_source_fileとして使用するのはどうでしょうか? wgetはhtmlファイルをダウンロードしないため、リンクが見つからないため削除することも、-r -l他のオプションもあります。ただ維持します-i-Aリストにはすでにmp3ファイルのみが含まれていますが)。-xファイル階層がなくてもファイル階層を強制するには、このオプションを使用します-r

つまり、サイトを再帰的に閲覧するには、wgetがhtmlファイルを保存しなくてもhtmlファイルをダウンロードして解析できるようにする必要があります。


別の方法は、wgetを使用して複数レベルのhtmlファイルをダウンロードすることです。その後、手動でこのファイルからリンクを取得し、見つかったすべてのmp3ファイルのリストを作成します(lynx、sed、およびfgrepがこれに役立つでしょう)。または、サイトがどのように構成されているかを知っている場合は、別の方法で目的のファイルのリストを生成します(たとえば、シェルスクリプトを使用して次の行を含むリストを生成します。

http://www.sagar.com/1/song.mp3
http://www.sagar.com/2/song.mp3
http://www.sagar.com/3/song.mp3
http://www.sagar.com/100/song.mp3

おすすめ記事