0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Excelの「Webから」でデータを取得できないときの切り分け方

0
Posted at

ExcelのPower Queryには、Webページの表をワークシートへ取り込む「Webから」コネクタがあります。URLを貼るだけで済むページもある一方、ブラウザでは見えているデータが候補に出ないこともあります。

この差がどこから来るのか気になり、日本語で公開されている表を例に、Microsoftの日本語ドキュメントを基準として切り分け方を整理しました。先に結論を書くと、最初に見るべきなのはExcelの設定よりも、取得先が「Power Queryで扱いやすいデータ源かどうか」です。

元記事:Octoparse公式ブログの「エクセルでWebからデータ取得できない時の原因と解決策10選」

試したこと

対象にしたのは、日本語版Wikipediaの「都道府県の人口一覧」です。都道府県名と国勢調査の人口がHTMLの表で公開されており、Power Queryの基本操作を試す対象として構造を確認しやすいため選びました。

手元の環境ではデスクトップ版Excelを起動できないため、Power Queryでの最終的な読み込み結果までは実測していません。Excel上で試す場合は、次の手順で再現します。

最短手順:Power Queryで取得する

Microsoft 365版Excelでは、次の流れでWebページへ接続します。

  1. データ タブを開く
  2. Webから を選ぶ
    • 表示されない場合は データの取得 → その他のデータソースから → Webから
  3. 取得先のURLを入力する
  4. 初回接続時は、ページに合った認証方法を選ぶ
  5. ナビゲーターでテーブルを選択する
  6. そのまま取り込むなら 読み込み、列の削除や型変換をするなら データの変換 を選ぶ

image.png

ナビゲーターに目的の表が出ない場合は、例を使用してテーブルを追加 も試せます。取得したい列の値をいくつか入力すると、その例をもとに表が組み立てられます。

ただし、Microsoftの案内では機能や画面がWindows、macOS、Excel for the webで異なる場合があるとされています。手元の画面に同じ項目がないときは、まず利用環境とExcelのバージョンを確認します。

静的な表を取り込む

次のURLを指定します。

https://ja.wikipedia.org/wiki/都道府県の人口一覧

ナビゲーターに候補が表示されたら、「順位」「都道府県」「2020年(令和2年)」など、目的の列を含むテーブルを選びます。不要な年代の列がある場合は、読み込み ではなく データの変換 を選び、Power Queryエディターで列を削除してからワークシートへ読み込みます。

image.png

このタイプは、取得したい値がHTMLの表として最初から返されるため、Webコネクタと相性がよい例です。ただしWikipediaの内容は更新されるので、業務データの一次情報として使う場合は各出典も確認する必要があります。

動的ページでは何が違うのか

日本語のサイトでも、ブラウザで見えているデータがJavaScriptによって後から表示されることがあります。商品一覧の追加読み込み、検索条件を選んだ後の結果、無限スクロールなどが典型例です。

この場合、Excel側の設定だけを繰り返し変更しても、初期HTMLから目的の表を作れない可能性があります。次に調べる対象は、認証や列の選択ではなく、ブラウザ表示後にどの通信でデータが届くかです。

判断基準は次のとおりです。

  • 初期HTMLに欲しい値がある:Power Queryの候補
  • 公式API、CSV、JSONがある:画面ではなく公式データへ接続
  • クリックやJavaScript実行後に値が現れる:ブラウザ操作を扱える方法を検討

取れないときは4段階で切り分ける

1. URL自体へ接続できるか

最初の接続でエラーになる場合は、URLの入力ミス、ネットワーク、認証方式を確認します。

Power QueryのWebコネクタが扱える認証はBasicだけではありません。デスクトップ版では、接続方法に応じて匿名、Windows、Basic、Web API、組織アカウントなどを選べます。ただし、任意のWebサービスに対するOAuthログインがすべて動くわけではありません。

認証方法を誤って保存した場合は、Excelの データソースの設定 から対象URLのアクセス許可を編集または削除し、接続し直します。

2. Power Queryが表として認識できるか

接続できても、ナビゲーターに目的の表が現れないことがあります。

典型的なのは、画面上では表に見えてもHTMLの <table> ではなく、<div> や <ul> の組み合わせで作られているページです。この場合は次の順で試します。

  1. Webビュー でページと検出済みテーブルを確認する
  2. 例を使用してテーブルを追加 で、欲しい値を数件入力する
  3. 同じデータを配布する公式API、CSV、JSONがないか探す

APIやCSVが公式に用意されているなら、私は画面のHTMLを解析するより先にそちらを選びます。列構造が明示されており、画面デザインの変更にも引きずられにくいためです。

3. データがJavaScriptで後から表示されていないか

ブラウザで見えるのにPower Queryでは空になる場合、データが初期表示後に読み込まれている可能性があります。無限スクロール、ボタンクリック後の一覧、SPAの画面などが該当します。

ここで注意したいのは、「JavaScriptを使うページはすべて取得不可」とは言い切れないことです。Power QueryにはWebコンテンツを扱う複数の仕組みがあり、利用製品や実行環境によって挙動が異なります。それでも安定して表が得られない場合は、次の選択肢を検討します。

  • ブラウザの開発者ツールで通信を確認し、利用可能な公式APIへ接続する
  • ブラウザ操作が必要なら、PlaywrightやSeleniumなどで取得処理を実装する
  • コードの保守が難しい業務では、ブラウザ操作型のスクレイピングツールを使う

4. 取得後に更新できるか

一度読み込めても、元ページの変更が自動でワークシートへ反映されるとは限りません。手動更新は データ → すべて更新 から行います。

デスクトップ版Excelでは、接続のプロパティに次の設定があります。

  • ファイルを開くときに更新する
  • 一定間隔で更新する
  • バックグラウンドで更新する

更新に失敗したら、認証の有効期限だけでなく、URL、列名、テーブル構造が取得時から変わっていないかも確認します。

Power Queryを使うか、別の方法へ切り替えるか

私は次のように判断します。

取得先の状態 最初に試す方法
公開された静的なHTMLテーブル ExcelのWebコネクタ
公式API、CSV、JSONがある 公式の配布元へ直接接続
整形や結合を繰り返したい Power Queryで変換手順を保存
クリック、スクロール、ページ遷移が必要 ブラウザ自動化または専用ツール
ログイン後の画面 認証方式と利用規約を確認してから選定
大量・定期取得 Excelだけに閉じず、APIや収集基盤を検討

ブラウザ操作型ツールの一例がOctoparseです。ページ上で取得項目やページ遷移を指定し、結果をExcelやCSVへ出力します。一方、公開APIへ数回リクエストするだけの処理なら、PythonやPower Queryのほうが小さな構成で済みます。対象ページの性質と、運用する人がどこまで保守できるかで選ぶのが現実的です。

スクレイピングの前に確認すること

技術的に取得できることと、取得してよいことは別です。実行前に少なくとも次を確認します。

  • 対象サイトの利用規約とrobots.txt
  • 公式APIやダウンロード機能の有無
  • 著作権、個人情報、データベースに関する権利
  • アクセス頻度と相手サーバーへの負荷
  • ログイン情報やAPIキーの保存方法

アクセス制限を回避することを前提にせず、許可された範囲で、必要な件数だけ取得します。

まとめ

ExcelでWebデータを取得できないときは、設定を何度も変える前に、次の順で見ると原因を絞りやすくなります。

  1. URLと認証方法は正しいか
  2. Power Queryが表として認識できる構造か
  3. JavaScriptやブラウザ操作が必要なページか
  4. 公式API、CSV、JSONという安定した入口がないか
  5. 更新頻度とデータ量がExcel向きか

静的な表の取り込みと整形にはPower Queryが便利です。反対に、複雑な画面操作や大量の定期収集が必要なら、Excelを最終出力先として残しつつ、収集部分だけ別の仕組みに分けるほうが保守しやすくなります。

参考資料

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?