【エクセル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属性を利用して画像ボタンをクリックする

  投稿者プロフィール

タカハシノリアキ株式会社プランノーツ 代表取締役
株式会社プランノーツ代表、コミュニティ「ノンプロ研」主宰。1976年こどもの日生まれ。東京板橋区在住。「ITで日本の『働く』の価値を上げる!」をテーマに、VBA&GASの開発、講師、執筆などをしております。→詳しいプロフィールはコチラ
★ご依頼・ご相談はお気軽にどうぞ!→お問い合わせはコチラ
★フォロー頂ければ嬉しいです。

コメント

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