今回は、Webページに掲載されている「表」からデータを取得する方法を紹介していこう。見た目が表形式になっているデータはもちろん、リストのようなデータも「Power Query エディター」に取得することが可能だ。Webページの更新にあわせて、Excelに取り込んだデータを最新状態に更新できることもパワークエリならではの利点といえる。

  • Webページからデータを取得

Webページからデータを取得する手順

ここでは、気象庁が公開している「過去の気象データ」をExcelに取り込む場合を例に、具体的な操作手順を紹介していく。まずは、取得したいデータ表が掲載されているWebページをブラウザに表示する。

以下の図は、2024年8月における東京の「日ごとの値」を表示したものだ。「気圧・降水量」と「気温・蒸気圧・湿度」の詳細データを表示するように指定している。ちなみに、この記事を執筆したのは8月15日で、その前日となる8月14日までのデータがWebページに掲載されている。8月15日以降は未来のデータになるため、現時点では空白になっている。

  • データ取得元のWebページ

パワークエリを使って、このデータ表をExcelに取り込んでみよう。WebページのURLを選択し、「Ctrl」+「C」キーを押してURLをコピーする。

  • URLを選択してコピー

続いて、Excelを起動し、「データ」タブにある「Webから」をクリックする。

  • 「Webから」コマンド

すると、以下の図のような画面が表示される。ここに先ほどコピーしたURLを「Ctrl」+「V」キーで貼り付けて「OK」ボタンをクリックする。

  • 先ほどコピーしたURLを貼り付け

続いて、Webへのアクセス方法に関する確認画面が表示される。通常は「匿名」のまま「接続」ボタンをクリックすればよい。

  • Webへの接続の確認

このような画面が表示され、画面左側に「取得可能なデータ表」が一覧表示される。この中から「実際に取得するデータ表」を選択すると、そのプレビューが画面右側に表示される。これを確認してから「データの変換」ボタンをクリックする。

  • データ表の選択

「Power Query エディター」が起動し、選択した表からデータが取得される。ただし、必ずしも適切な形でデータが取得されるとは限らない。

  • 「Power Query エディター」に取得されたデータ

前回の連載で紹介した「PDFからデータを取得する場合」と同様に、このデータを利用するには、データ表を適切な形に整理してあげる必要がある。

取得したデータ表の整理

「データ取得元のWebページ」と「実際に取得されたデータ」を見比べながら、データ表を整理していこう。今回の例では、表の“見出し”が最大で4つに階層化されている。

  • データ取得元のWebページ

これらのうち、「列名」として取得されているは1階層目のみ。2階層目以降の“見出し”は「データ」として取得されてしまっている。これを適切な形に整理するには、2階層目以降の“見出し”も「列名」に含めるように、自分で「列名」を入力しなおさなければならない。

  • 「Power Query エディター」に取得されたデータ

とはいえ、すべての「列名」を入力しなおすのは面倒なので、先に“不要な列”を削除しておこう。ここでは「降水量の合計」、「最高気温」、「平均湿度」の3つが必要な場合を例に話を進めていく。この場合、「気圧」などの列は不要なので、これらの列を削除する。

  • 不要な列の削除

不要な列を削除できたら、それぞれの「列名」を内容が理解できるように修正していく。たとえば、「気温(℃)」→「最高」→「値」という階層になっていた列は、「最高気温(℃)」という列名に修正すると内容を理解できる。同様に、「湿度(%)」→「平均」の列は、「平均湿度(%)」で内容を理解できるはずだ。

  • 「列名」の修正

これで「列名」の修正は完了。不要になった“1~3行目のデータ”を削除しておこう。この処理は、「行の削除」→「上位の行の削除」を選択し、削除する行数に「3」を指定すると実行できる。

  • 1~3行目のデータを削除する処理

最後に、各列の「データ型」を指定する。小数点以下を含む数値データの場合は「10進数」、小数点以下を含まない数値データの場合は「整数」のデータ型を指定するのが基本だ。このとき、「--」の文字列がErrorになってしまうが、これらのセルは出力時に「空白セル」に置き換わるので、Errorのまま放置しておいても構わない。

  • 「データ型」を指定してデータ表を出力

「閉じて読み込む」をクリックしてデータ表をExcelに出力し、各列に「表示形式」を指定すると、以下の図に示したようなテーブルを得ることができる。

  • 出力されたテーブル(表示形式を指定)

以上が、Webからデータを取得するときの大まかな流れとなる。「データ表をどのように整理していくか?」は取得元の状況に応じて変化するが、たいていの場合、特に問題なくデータを取得できるだろう。

クエリの更新による最新データの取得

パワークエリならではの利点は、手軽に“最新データ”に更新できること。これはWebからデータを取得した場合も同様だ。先ほどの例を使って詳しく解説していこう。

データを取得したのは8月15日で、その時点では8月14日までのデータがWebページに掲載されていた。よって、Excelに取得されるデータも「8月14日まで」となる。その後、再びExcelファイルを開き、「データ」タブにある「すべて更新」をクリックすると、

(1)Webページからデータを取得する
(2)データ表を“適切な形”に整理する
(3)加工したデータ表をExcelにテーブルとして出力する

という処理が再実行され、「最新のWebページ」を反映させた形でデータを取り込むことが可能となる。たとえば、2日後に「すべて更新」をクリックした場合、取得されるデータが2日分増えて「8月16日まで」のデータが表示されるようになる。

  • クエリの更新により追加されたデータ

このように、手軽に最新データに更新できることもパワークエリならではの利点といえる。いちいち手作業でデータを取得しなおす必要はない。「すべて更新」をクリックするだけで、現在のWebページに即したデータを取得することが可能だ。

ちなみに、データの自動更新が有効になるための条件は以下の2つ。

・URLが変更されていない
・データ表の構造が変化していない

上記の2つを満たしていれば、「すべて更新」をクリックするだけで、問題なく最新データに更新できるだろう。

Webページからデータを取得した例

見た目が「表」になっていなくても、Webページからデータを取得できるケースもある。思い通りにデータを取得できるかはケース by ケースになるが、いくつか例を紹介しておこう。

以下の図は、「毎日新聞」のWebサイトで「1日のアクセス数ランキング」のページを閲覧した例だ。2024年8月15日にWebページを閲覧したので、前日の8月14日のアクセス数ランキングが表示されている。

  • データ取得元のWebページ

パワークエリを使って、このWebページからデータを取得すると、以下の図のようなデータを取得できた。列名が「Column1」や「Column2」などになっているが、それ以外は特に問題なくデータを取得できているようだ。

  • 「Power Query エディター」に取得されたデータ

文字数(Column4)の列を削除し、各列に適当な「列名」を入力してからExcelに出力する。その後、テーブルの書式を調整すると、以下の図のような形でデータをExcelに取り込むことができた。

  • 出力されたテーブル(書式を調整)

もちろん、データの自動更新にも対応している。以下の図は、2日後である8月17日に「すべて更新」をクリックした例だ。テーブルの内容が「8月16日時点のアクセス数ランキング」に更新されているのを確認できる。

  • 「すべて更新」でデータを更新した例

このように掲載元のWebページが「表」の形式になっていなくても、文字情報だけを問題なく取得できるケースもある。

もうひとつ例を紹介しておこう。以下の図は、「ORICON NEWS」のWebサイトで「デイリー シングルランキング」のページを閲覧した例だ(2024年8月13日付のランキング)。

  • データ取得元のWebページ

このWebページからも問題なく「Power Query エディター」にデータを取得することができた。こちらも「列名」が取得されていないが、元のWebページにも「列名」に相当する文字がないので、これは仕方のない問題といえるだろう。

  • 「Power Query エディター」に取得されたデータ

不要な列を削除し、各列の「列名」を自分で入力してからExcelに出力する。その後、テーブルの書式を調整すると、以下の図のような形でデータをExcelに取り込むことができた。

  • 出力されたテーブル(書式を調整)

ただし、こちらのデータを自動更新することは不可となる。というのも、日付に応じてWebページのURLが変化する仕組みになっているからだ。最新の情報に更新するには、データの取得元となるURLを変更しなければならない。

念のため、その手順を紹介しておこう。「データ」タブにある「クエリと接続」をクリックし、クエリの一覧を表示する。その後、クエリ名をダブルクリックして「Power Query エディター」を起動する。

「Power Query エディター」が起動したら、「詳細エディター」をクリックし、処理内容全体のM言語を表示する。このM言語内にある「ソース = Web.BrowserContents("……")」の部分がデータ取得元のURLを指定する部分だ。

  • 「詳細エディター」で取得元のURLを変更

URLを書き換えてから「OK」ボタンをクリックすると、指定したURLからデータを取得しなおすことが可能となる。

このように、Webページからのデータ取得は、取得元のWebページに応じて状況が大きく変化する。問題なくデータを取得できる場合もあれば、データ表を整理するのが難しい場合もあるし、「すべて更新」では最新データに更新できない場合もある。上手に活用するには少しだけWebの知識も求められるが、気になる方は試してみるとよいだろう。