ローカル HTML ファイルから特定の URL を解析する

ローカル HTML ファイルから特定の URL を解析する

保存したURLから特定のURLを解析したいhtml- 簡単な bash スクリプト/コマンドを含むファイルなので、wget後でダウンロードできます。
これまでのところ、次のものがあります。

awk 'BEGIN{ RS="<a *href *= *\""} NR>2 {sub(/".*/,"");print; }' index.html >> url-list.txt

これは、HTML ファイル内のすべてのリンクを、きちんとした txt ドキュメントに書き込みます。

しかし、必要なのは特定のリンクだけです

  • 特定のドメインから
  • たとえばすべての.oggファイル

最終的に次のようになります。

http://www.foo.com/(ランダムフォルダ)/(ランダムベース名).ogg

または

http://subdomain.foo.com/(ランダムフォルダ)/(別のランダムサブフォルダ)/(ランダムベース名).ogg

前もって感謝します!

答え1

「Bash で」実行する必要があるとおっしゃっていますが、「純粋な Bash 構文を使用する」のではなく、「スクリプトで」という意味のようです (違いがあります)。「スクリプトで」という意味を希望しているのだと思います。


文書内の別々の行にすべてのリンクを保存した場合、http://www.example.com/次のようにしてドメイン上のすべてのリンクを選択できます。

grep "^http://www\.example\.com/" filewithlinks.txt

.oggまたはで終わるすべてのリンク

grep "\.ogg$" filewithlinks.txt

(ピリオドの前のバックスラッシュは、" ." 記号をエスケープするためのもので、通常は "任意の文字" を意味します。" \." は、リテラルのピリオドを意味します。エスケープしないと、たとえば "logg" で終わるリンクにも一致します。)

コマンド内で直接行のマッチングを行うこともできますawk が、時々変更するのはより複雑になると思います。最も簡単な方法は、リンクの完全なリストをファイルに保存し、grep上記の例のようにファイルを検索することです。そうすれば、マッチングパターンを変更する場合でも、ドキュメントを再度ダウンロードして解析する必要がなくなります。

関連情報