April 13, 2007

webからテキスト部分だけを抽出する

要件は次のとおり。

  • 整形されてないテキストがほしい
  • 後にkakasiとかでローマ字に分解したいので、もともとASCII文字であるものを区別したい

他にももっとうまい手がありそうだけど、とりあえず以下で落ち着いた。

#! /bin/sh

w3m -dump_source $1 | nkf -w | sed -n -e "/<body.*>/!{x;/<body.*>/{x;\,</body>,{q};s/&nbsp;/ /g;s/<[^<>]*>//g;s,\([-0-9a-zA-Z ().!\"#$%&=^~\\|\`@{};:+*,<>/?_'[]]*\),<ASCII>\1</ASCII>,g;s,<ASCII></ASCII>,,g;s,</ASCII><ASCII>,,g;/^$/{d};p};d};/<body.*>/{h}"


実体参照の置換は他にも必要になるだろうけど、まあそれはそれで。

No comments: