2008年11月24日月曜日

Google スプレッドシートの ImportHtml 関数で HTML の table 要素を取得。気象庁の気圧データを抽出してみる。

1. Google スプレッドシートでウェブサイトからデータを取得する

気象庁のウェブサイトには、過去の気象データが表形式で公開されている。

Google スプレッドシートの importhtml 関数 を利用すると、このデータを簡単に表計算に取り込むことができる。

例えば、「気象庁の日ごとのデータ」から、

  • 「現地の気圧」
  • 「平均気温」

の列を抽出したいとする。

 

2. IMPORTHTML 関数の使い方

a. 対象の table 要素が何番目にあるか調べる

importhtml 関数では、HTML の table 要素を抽出できる。その際、対象の table 要素が何番目にあるか指定する必要がある。そのためには、

  1. データが表示されているページのソースを表示させる。(ブラウザとして Firefox を使っているなら、ページの適当なところで右クリック > 「ページのソースを表示」を選択。 )
  2. 抽出したデータを含む対象の table 要素が、ページの先頭から数えて何番目にあるか確認する。(`table’ で文字列の検索をするとよい。)
  3. Google スプレッドシート において、A1 セルを選択しておき、数式のアイコンをクリック > 「その他の数式」を選択。

081124-001

 

b. ImportHtml 関数の引数

数式を挿入するためのダイアログが表示されたら、

  • 081124-002Google > ImportHtml

を選択。その結果、A1 セルに次のように表示される。

=ImportHtml(URL, クエリ, 指数)

ここで指定する値は、

  • URL : 対象のテーブルがある URL
  • クエリ : “table”
  • 指数 : そのページ内の何番目のテーブルを対象とするか?

(cf. Functions : Functions for external data - Google Docs Help Center)

変更(2014/03/02)例題のデータがあるページのソースを調べたら、table 要素がいくつかあった。目的の table は 4 番目にあることが分ったので、セル A1 に以下のように入力する。

=ImportHtml("http://www.data.jma.go.jp/obd/stats/etrn/view/daily_s1.php?prec_no=44&prec_ch=%93%8C%8B%9E%93s&block_no=47662&block_ch=%93%8C%8B%9E&year=2008&month=11&day=&elm=daily&view=", "table", 4)

少し待つと、以下のような表が Google スプレッドシートに作成される。

081124-003

残念ながら、対象のページの文字エンコーディングが Shift_JIS だったので文字化けしてしまった。

 

3. 必要なデータの抽出

次に、シートを新しく追加し、上記の表のうち A 列と F 列のみを参照する。

上記の表があるシートの名前が `シート1’ であるとすると、新しく追加したシートの A1, B1 にはそれぞれ次のように入力。

  • A1 : ='シート1'!B5
  • B1 : ='シート1'!G5

必要なだけ連続データを作成して完了。

081124-004

 

4. 柔軟にデータを扱いたいなら、プログラミング言語を利用したほうが良い

このようなデータは、プログラミング言語を利用して必要な情報を抽出する方が良い。

しかし、Google スプレードシートを利用するとお手軽に抽出処理を行える。