トップページ > コンピュータ関連 > table2csv.pl
DATE:2006/03/11
UPDATE:2006/03/20
WRITTEN BY chihiro <at> dream <dot> com
html文書の中にtableタグで組まれている表を、csvに変換するPerlスクリプトです。
HTMLのtableタグで書かれている表を、csvデータに変換する為に作りました。
この手のスクリプトが欲しくて探したんですが、なかなか見付からなかったんで、
しかたなく作成。
使い捨てスクリプトっぽく適当に作ったのですが、この程度でもひとまず使えると思い、
捨てるのももったいなかったので公開しておきます。
以下のように、標準入力からHTML文書を読み込ませてください。
csvデータが出力されます。
# cat <html file name> | nkf -e | perl ./table2csv.pl # w3m -dump_source <URL>| nkf -e | perl ./table2csv.pl
オプションはありません。
2006/03/20現在、HTMLタグの標準入力のみ対応しています。
特別なインストール作業は不要です。
展開して以下のように適当に実行できるようにしてください。
Q) HTML内に、別々に複数のテーブルが内包されている場合、出力されるCSVはどのようになりますか?
A) 連続したテキスト内に、一つずつ出力されます。
Q) 入れ子になったtableタグはどのように出力されますか?
A) 未確認ですが、想定して作っていないので、きっと適切に処理できません。
Q) データ内のダブルクォーテーションが、2つのダブルクォーテーションに変わっています。
A) csv出力時にそのように修正して格納しています。
csvは "〜","〜","〜" というようにデータ部をダブルクォーテーションで区切られています。
データ内のものと、データの区切りのものを区別するためにそのようにするのが
csv生成では一般的らしいのでそのようにしています。
Q) 動作確認済環境は?
A) 作者は以下の環境で確認しています。
Distribution: Gentoo Linux
Kernel: 2.4.31-gentoo-r1
Perl: v5.8.7
Q) とにかくうまくCSVに出力されません・・・
A) お役に立てず残念です。
もしこのスクリプトがうまく動作しないとすれば、それは<table>〜</table>の中に適切に <tr>〜<td>〜</td>〜</tr> が記述されていない場合と考えられます。 適切に記述さえしていれば、CSV化はされるはずなので、タグの記述を確認してみてください。 およそブラウザ上でまともな表組みがされていれば、大丈夫だと思うのですが...
タブのタイプミス (ex. <td> -> <th>)
閉じタブの未記述
色々見ていると、
その他、スクリプトは単純なものなので、うまく動くように調整してもらうのもいいでしょう。
「ソフトウェア」およびこのライセンス文書は、現状有姿(as is)で提供され、 いかなる種類の保証もありません。 これには、設計、商品性および特定の目的への適合性を含みます。