読者です 読者をやめる 読者になる 読者になる

Wikipediaにある表をCalcに取り込む方法

Wikipediaに書かれている表をExcelとかCalcに取り込みたいことってあると思うんですよ。

わたしはWikidataぽいことをしていると常にそんな気持ちになるのですがそれは置いておきます。とにかくまあ、自由に使えるものなのでじゃんじゃん加工して使いたいと思うのが人情です。

それで、やったみたらうまくいったり行かなかったりしたのでその経過などをここにメモしておきます。使っているのはMacOSX版のLibre Offceバージョン: 5.0.4.2です。

普通のレイアウトのテーブル

レイアウトが凝っていない普通のテーブルでは、コピペでふつうに取り込めます。ほんとうはCopy & Pasteとかきたいのですがコピペって言わないと通じない方がいるみたいなのでコピペと書きました。

[[南北朝時代]]にある南北朝時代元号の表

f:id:Suisui:20160323213522p:plain

これをCalcにコピペするとこうなります。

f:id:Suisui:20160323213617p:plain

だいたいうまくいっているように見えます。

ちょっと凝ったレイアウトのテーブル

ではその下にある、南北朝時代天皇のテーブル

f:id:Suisui:20160323213912p:plain

これをコピペしてみましょう。

f:id:Suisui:20160323214310p:plain

左側はうまくいきましたが右側はレイアウトが崩れてしまいました。

インポートしてみる

CalcにはExcelのデータ>Webクエリ にあたる機能があって、これを使うとwebページから表を取り込むことができます。

名前が訳分かりませんがメニューから挿入>外部データへのリンクを選びます。

f:id:Suisui:20160323215709p:plain

よくわからないダイアログが出るので、この上のテキストボックスにURLを入れてEnterを押します。(右のボタンをクリックではダメです。OKもクリックできません)

f:id:Suisui:20160323215802p:plain

すると下側の枠内がいろいろ埋まるので、HTML_tablesを選んでOKをクリックします。

f:id:Suisui:20160323215945p:plain

これでインポートは出来るのですが、残念ながら文字化けしてしまいました。

f:id:Suisui:20160323220041p:plain

元の表と見比べると分かりますが、文字化けはしているもののレイアウトはきちんと再現できているようです。

となると文字化けだけ直せば良さそうです。

適当に文字化け対応する

Calcでは通常のテキストファイルなどを開く時にはエンコーディングを手動で設定できますが、HTMLだとできないようです。

そこで、ファイルに細工をします。

まず、元のhtmlファイルをダウンロードします。Firefoxだとメニューから別名でページを保存->Webpページ、HTMLのみで保存します。

テキストエディタで保存したhtmlを開きます。

f:id:Suisui:20160323220803p:plain

4行目ぐらいに

<meta charset="UTF-8" />

という記述があるのでこれを

<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">

に書き換えて保存します。

f:id:Suisui:20160323221205p:plain

これをインポートしてみましょう。

Calcで挿入>外部データへのリンクを選び、こんどは検索ボタンを押して先ほど保存したhtmlを指定します。

f:id:Suisui:20160323221655p:plain

成功です。これで増やしたり減らしたりWikidataに流し込んだりがやりやすくなりました。

まとめ

Wikipediaの表をCalcにインポートするやり方としては

  • Wikipediaのページをhtmlで保存する
  • ヘッダ付近の文字コード指定を書き換える
  • Calcでインポートする

です。

なお、これはCalcのhtml ImportがHTML5にちゃんと対応していないので起きているようです。

Libre Officeのissue のこれだとおもうのですが、同根かどうかはわかりません。

今も昔も他言語系のバグは長期化しやすく、しばらくはこの方法が使えるかもしれませんし、すぐに直るかもしれません。

無料で使わせて頂いてる身ですので、解決策はあるのでのんびり待つことにしようかと思います。