スプレッドシートにWeb上のデータをスクレイピングする方法

情報管理LOGの@yoshinonです。
Googleスプレッドシートを最近ゴニョゴニョしているのですが、その中でWebのデータをスプレッドシートに取り込むというのもやっています。これがね、案外簡単なんですよ。というわけで、全開のスプレッドシートつながり第2弾でWebデータのスクレイピングしたのをスプレッドシートに取り込む方法についてです。
【 スプレッドシートにWeb上のデータをスクレイピングする方法 】 1.スプレッドシートは、Webからも取り込めるよ 2.Web上のデータをスクレイピングしてスプレッドシートに取り込む方法 |
前回は、他のスプレッドシートのデータを参照する方法について書きました。元々、Webサービスであるので、むしろローカルデータを扱うエクセルより実は柔軟に扱えたりするのですよね。
スプレッドシートで他のシートの値を参照する方法
前回のは、スプレッドシート同士のデータを参照するというものでしたが、Web上のデータを取り込めないでしょうか?
例えば、こんなの。
気象データ(都道府県データランキング)

※引用:気象データ(都道府県データランキング)
こういうデータを気軽に引っ張ることができたら色々捗りそうですよね?
では、さっそくやっていきましょう。
今回使う関数は、IMPORTHTMLというやつです。これは、Web上のデータを引っ張ってくるための関数です。
構文は、こんな感じ。
IMPORTHTML(URL, クエリ, 指数)
よく分からない人にとっては何のこっちゃって感じですよね。
URLは、そのまま参照したいURLです。
クエリは、2種類しかありません。"list"(リスト)か "table"(表)だけです。リストだったら"list"だし、表だったら"table"ですね。今回だったら、表からデータを抜きたいので、"table"となります。
で、分かりにくいのは、この指数です。そのサイトのHTMLソース内にある定義されている番号なのです。が、ぶっちゃけソースを眺めてどれかなぁとか丁寧にやっても良いのですが、膨大な量でない限りは、決め打ちで「だいたい2ぐらいかな?」みたいに当てずっぽうでやってみても良いと思います。1回で上手くいかなくても、数回以内に目的のデータにあたります。
では、先ほどのサイトのデータをスクレイピングしてみましょう。
数式は、こんな感じ。
=IMPORTHTML("https://uub.jp/pdr/g/w_7.html","table",6)
ハイ!できました。

ついでに、こちらのデータもスクレイピングしてみますか。
世界の株価指数と米長期金利 - Yahoo!ファイナンス
ハイ!簡単!

ちなみに、数式は左上の1箇所だけ入力するだけで良く、それぞれの表のデータの大きさに合わせて勝手にデータを各セルに引っ張ってくれます。しかも、当たり前だけど、これらスクレイピングした表は、元となるデータが更新されれば、自動的に更新されます。

Web方面は、スプレッドシートに一日の長あり
Microsoftもこの数年で365において、Web連携を一気に進めてきました。このあたりも、いずれ情報管理LOGでとりあげていきますが、それでもGoogleスプレッドシートの方がまだ一日の長ありですね。簡単さやデータの取り回しの良さは、さすがとしか言い様がありません。追撃するMicrosoftもグイグイ来るでしょうけどね。お互い切磋琢磨してくれると、ユーザーとしては有り難いばかりです。
- 関連記事
-
- スプレッドシートにWeb上のデータをスクレイピングする方法
- 超お得!プライムデー前に5000円購入して1000ポイントGETしよう
- Googleレンズは、なかなか優秀な図鑑ではないか?