トップページ > コンピュータ関連 > table2csv.pl

[japanese] [english]

table2csv.pl - tableタグをcsvに変換するPerlスクリプト

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タグの標準入力のみ対応しています。

インストール

特別なインストール作業は不要です。
展開して以下のように適当に実行できるようにしてください。

  1. アーカイブの展開
  2. 1行目のperlのパスを調整(#!/usr/bin/perl)
  3. 実行権限の付与($ chmod 755 table2csv.pl)
  4. 実行確認($ ./table2csv.pl)

出力されるCSVの書式について

FAQ

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)で提供され、 いかなる種類の保証もありません。 これには、設計、商品性および特定の目的への適合性を含みます。

ダウンロード

改版履歴

counter: can not open datafile