yhara.jp

Recent Posts
Edit

HTMLのテーブルをcsvにするRubyスクリプト

2017-08-01
Tech

仕事で、GitHub Wikiに書いた表をExcelにしたいというシチュエーションがあったので、簡単なRubyスクリプトを書いた。

実行にはNokogiriが必要 (gem install nokogiri)。ブラウザでWikiページをa.htmlという名前で保存したものとする。

require 'nokogiri'
require 'csv'

# a.htmlというファイルを読み込んでNokogiriのオブジェクトに変換する
doc = Nokogiri::HTML.parse(File.read("a.html"))
# tableタグを見つける(今回は表が1つしかなかったのでfirstで最初の表を選択)
table = doc.search(:table).first

# CSV形式の文字列を作る
csv_txt = CSV.generate{|csv|
  # table内の各trタグごとに、
  table.search(:tr).each do |tr|
    # その中のthとtdを探して、.textでテキスト部分を取り出す
    csv << tr.search("th,td").map{|tag| tag.text}
  end
}

# 最後に、utfからsjisに変換して出力 (古いExcelを使っているせいかutfだと文字化けしたため)
puts csv_txt.encode("Windows-31J", "UTF-8")

これをconv.rbという名前で保存して、以下のように実行するとa.csvができるので、Excelで開いて、セルの幅などを調整すれば出来上がり。

$ ruby conv.rb > a.csv

こういうのをさくっと書けると楽しい。


More posts