スプレッドシートを使ってスクレイピングを文系プログラミング初心者がやってみる
大学は文系、社会人になって営業→フリーター→IT会社と経験した30代です。
そんな筆者がIT会社で出会った面白いこと、それがスプレッドシートのスクレイピングでした。
今回はそんなスプレッドシートのスクレイピングについて紹介していこうと思います。
(素人なのでかなりざっくりとしたものになるかもしれませんが、そこはご了承ください)
ネットの情報をスクレイピング
スクレイピングとはなんぞや?
とはず初めに思う方もいると思いますが、筆者がざっくり理解している定義としては、「情報を取得して利用できるように加工する」ということかなと思います。
簡単な例としては、
「ネット上の株価情報をヤフーのページから取得してスプレッドシートに反映する」
ようなことです。
そんなスクレイピングの機能について具体的な作り方を説明していこうと思います。
まず全体像
これはヤフーファイナンスの経済指標ページから、直近の経済指標を取得したものとなります。
これ、通常はプログラムを書いて取得するものなのかもしれませんが、これをスプレッドシートの関数の一つである「IMPORTHTML」を使うことで、ページの情報を取りたいところを指定してスプレッドシートに記述することが可能になります。
具体的な書き方
早速具体的な書き方について紹介していこうと思います。
スプレッドシートにヤフーファイナンスの経済指標URLを記載
IMPORTHTMLで読み込む対象の確認
IMPORTHTML関数を書き込む
この手順でできます。
まず1については、読み込みたい対象のあるページを今回はスプレッドシートのA1セルに記載します。
「https://info.finance.yahoo.co.jp/fx/marketcalendar/」
次に2については、上記のURLのページがFXページとなり、下の方に表になった経済指標がありますが、これを取得対象としますので、このhtmlを一応確認します。
確認の仕方は、取得しようとしている表内をドラッグし、右クリック→検証
と進む
そうすると
こんなhtmlがずらずらと書かれた画面が出てくる。
選択している文字については、青いハイライトの部分が該当するよ、とこの画面では教えてくれていますが、その上の方に青線で引いた「table」という記述が今回取得対象の記述となります。
どのようなことかと言いますと、importhtmlはhmtl内の指定した
とあり、今回その表を指定する必要があるためtableという記述に注目します。
このページの中ではキャプチャのtableが表としては最初に登場します。
この場合、ドキュメントエディタヘルプの記載によると、
構文:IMPORTHTML(URL, query, index)
このような記載にする必要があり、indexはページ内の要素の順番を書くようで、この場合1番目に出てきているので1と入力
つまりは
「=IMPORTHTML(A1,"table",1)」
と記載すればよいということになります。
これを実際にB2セルに記載すると
こんな感じでヤフーファイナンスページの5月財新サービスPMIという指標がとれたことになります。
以外と簡単ですよね。
これを色んな情報取得に使えば、例えば株式やFXをやっている方の情報収集の強い味方になるのではないか、とこの機能を知った時に思ったため、今回書いてみました。
まとめ
今回は簡単にネットの情報をスクレイピングする方法について紹介してきました。
昔と違い、今はプログラミング初心者でも、比較的簡単にプログラムの真似事ができる時代になってきました。
技術の進歩には本当に頭が下がります。(エンジニアの皆様、ありがとうございます。)
本記事はここまでとしようと思いますが、筆者は上記のスクレイピングを知り、さらに踏み込んで独学で応用編としてスクレイピングした情報をslackというツールに送信し、スマホに通知できるようなプログラムを作りました。
もしご興味があればご覧ください
Google Apps Script(GAS)を使ってコロナ感染状況をxpathで指定してスクレイピング→Slackへ通知__「サラリーマンがプログラミングしてみた」