【エクセルVBAでIE操作】WEBページのテーブル要素からセルのデータを取り出す方法


cell

photo credit: andrey.pehota via photopin (license)

みなさん、こんにちは!
タカハシ(@ntakahashi0505)です。

初心者向けエクセルVBAでIEを操作するシリーズをお送りしています。

前回の記事はこちら。

【エクセルVBAでIE操作】WEBページのテーブル要素を自動で取得する方法
初心者向けエクセルVBAでIEを操作するシリーズ7回目。今回はHTMLにおけるテーブルの構成の仕方に触れつつ、そのテーブル内のデータを取得するというWEBスクレイピングらしいテクニックを解説します。

IEでWEB上の表を取得し、その各行のテキストを取得する方法をお伝えしました。

さて、行を表すtr要素の配下には、さらにセルを表すtd要素というものがあります。

今回は、それを一つ一つ取り出していきたいと思います。

ということで、WEBページのテーブル要素からセルのデータを取り出す方法です。

では、行ってみましょう!

前回のおさらい

前回からテーマにしているのは、こちらのYahooファイナンスの時価総額ランキングのページです。

時価総額上位:株式ランキング – Yahoo!ファイナンス

前回は、HTMLで表の構造がどのようになっているのか、Google Chromeのデベロッパーツールで確認をしつつ、以下のようなプロシージャを作成しました。

ページ内に、テーブルの本体セクションを表すtbody要素が1つしかありませんので、それをまず取得、その後それに含まれる行を表すtr要素をコレクションとして取得しました。

さて、今回はそのtr要素の配下にさらにtd要素がありますので、その取得をしていきたいと思います。

テーブルの各セルのテキストを取り出す

tr要素からtd要素のコレクションを取得する

前回のプロシージャの17~19行目で、tr要素についてのループになっていますが、このtr一つ一つについてtd要素を取得して、それについてループをするというネスト構造にしていけば良さそうです。

tr要素を表すHTMLTableRowオブジェクトに対しても、他のHTML要素と同じくgetElementsByTagNameメソッドを使うことができます。

HTMLTableRowオブジェクト.getElementsByTagName(タグ名)

これで、td要素HTMLTableCellオブジェクトのコレクションとして取得できるわけです。

td要素のコレクションをループしてテキストを取り出す

そのコレクションに対してループをしてあげれば、個々のセルのデータを取り出すことができます。

今回も、innerTextプロパティでテキストを取り出してみましょう。

HTMLTableCellオブジェクト.innerText

テーブルのtd要素のテキストを取り出すプロシージャ

では、以上を踏まえてプロシージャを作り直します。

こちらです。

実行をすると、以下のような出力を得られます。

テーブルのtd要素のテキストを出力

まとめ

以上、エクセルVBAでWEBページのテーブル要素からセルのデータを取り出す方法をお伝えしました。

入れ子状態にはなっていますが

  1. getElementsByTagNameメソッドでコレクションを取得
  2. For Each文でコレクションをループ
  3. 各要素に対して処理

という基本動作の組み合わせになっていることがわかりますよね。

テーブルはこのような階層構造を取得するには良い題材ですよね。

次回以降、さらに凝った取得の仕方についてお伝えできればと思います。

【エクセルVBAでIE操作】IEで検索窓にキーワードを入力して送信する方法
初心者向けエクセルVBAでIEを操作するシリーズです。今回はIEを操作してWEBページ内の検索窓に任意のキーワードを入力して送信する方法をお伝えします。GoogleChromeの検証機能も活用しますよ!

どうぞお楽しみに!

連載目次:エクセルVBAでIEを操作してWEBスクレイピング

IEを操作してWEBページのデータを取得して、エクセルのデータとして取り込む、つまりWEBスクレイピングをエクセルVBAで実現します。各種WEBページを課題として様々なデータの取得の仕方を解説していきたいと思います。

  1. 【エクセルVBAでIE操作】10分で終わるセッティングとWEBページの閲覧確認
  2. 【エクセルVBAでIE操作】HTMLタグと要素そしてドキュメントの取得
  3. 【エクセルVBAでIE操作】ブラウザの読み込み待ちをしないとダメなのです
  4. 【エクセルVBAでIE操作】ページ内のリンク先URLを全部取得する
  5. 【エクセルVBAでIE操作】ディスクリプションなどの要素をname属性でGetする
  6. 【エクセルVBAでIE操作】hタグなどの要素をタグ名でGetする
  7. 【エクセルVBAでIE操作】WEBページのテーブル要素を自動で取得する方法
  8. 【エクセルVBAでIE操作】WEBページのテーブル要素からセルのデータを取り出す方法
  9. 【エクセルVBAでIE操作】IEで検索窓にキーワードを入力して送信する方法
  10. 【エクセルVBAでIE操作】検索結果一覧から記事タイトルを取得する方法
  11. 【エクセルVBAでIE操作】ブログの記事一覧ページから公開日とカテゴリを取得する
  12. 【エクセルVBAでIE操作】ページャーをめくって複数ページからデータを取得する
  13. 【エクセルVBAでIE操作】ユーザー名とパスワードを入力してログインをする
  14. 【エクセルVBAでIE操作】name属性を利用して画像ボタンをクリックする
  15. 【エクセルVBAでIE操作】alt属性・src属性を利用して画像ボタンをクリックする

タイトルとURLをコピーしました