wgetコマンドの後に得られたすべてのhtmlファイルをプレーンテキストファイルに変換するには?
使用を検討しています。サルクHTMLファイルを「.txt」ファイルに変換してタグを削除します。
ウェブサイト全体を保存するこのコードスニペットがありますが、ローカルフォルダ「test」の「foobar」ウェブサイトのhtmlファイルから変換されたテキストファイルのみを保持するようにコードをどのように変更しますか?
wget -P /test/ --recursive http://foobar.html
何をすべきかわからないパイプで接続するサルクそして指定する方法特定のディレクトリ内のすべてのファイルにコマンドを適用する。
答え1
wget
おそらく正しいツールではないでしょう。 Lynxはファイルをダウンロードして同時にプレーンテキストに変換できますが、出力をファイルにリダイレクトしてこれを行います。オプションがないため、-output
出力名を指定する必要があるため、スクリプトで使用するのはやや厄介です。
ただし、.html
ディレクトリがファイルでいっぱいであると仮定すると、ディレクトリをfind
繰り返して、次のようにファイルを変換できます。
#!/bin/sh
find . -type f -name '*.htm*' | while IFS= read path
do
lynx -dump "$path" >"${path%%.htm*}.txt"
done
".txt"ファイルを同じツリーに配置するか、
#!/bin/sh
find . -type f -name '*.htm*' | while IFS= read path
do
target=${path/foobar/test}
lynx -dump "$path" >"${target%%.htm*}.txt"
done
「test」フォルダにあります(「foobar」を「test」にマッピング)。 「/」置換は bash に固有のもので、POSIX にはありません (ただし、sed
POSIX を使用することを選択した場合はうまく機能します)。
追加資料:
- 2.6.2 パラメータ拡張(POSIX)
答え2
スケジュールに従ってHTMLファイルにダウンロードしてから、コマンドラインユーティリティを使用できますhtml2text
。
https://stackoverflow.com/questions/30015809/html2text-convert-special-characters