【エクセルVBAでIE操作】検索結果一覧ページから記事紹介文を取得する


collection

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

初心者向けエクセルVBAでInterneteExplorer(IE)を操作するシリーズです。

前回はこちらの記事です。

【エクセルVBAでIE操作】検索結果一覧から記事タイトルを取得する方法
初心者向けエクセルVBAでInterneteExplorer(IE)を操作するシリーズです。今回から何回かにわたって、ブログサイトの記事一覧をWEBスクレイピングで取得する方法をお伝えします。

Yahoo!検索結果一覧から記事タイトルを取得する方法をお伝えしました。

今回は記事タイトル、URLに加えて、紹介文、つまりディスクリプションも取得してみたいと思います。

ということで、エクセルVBAでIEを操作して検索結果一覧ページから記事紹介文を取得する方法です。

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

前回のおさらい

前回作成したプログラムをおさらいしたいと思います。

以下のYahoo!のページから任意のキーワードで検索をするマクロを作成しました。

Yahoo! JAPAN
あなたの毎日をアップデートする情報ポータル。検索、ニュース、天気、スポーツ、メール、ショッピング、オークションなど便利なサービスを展開しています。

コードはコチラです。

17~20行目までは、Yahoo!の検索窓にキーワードを入力してクリックする処理ですね。

そして25~30行目が、検索結果ページから記事タイトル(h3タグ)とそのリンクURLを取得してデバッグ出力する部分です。

IEの読み込み待ち処理は34~40行目のWaitというSubプロシージャに部品化しました。

Yahoo!検索結果ページから記事・URL・ディスクリプションを取得する

今回は、記事タイトルとURLに加えて、その紹介文つまりディスクリプションを取得していきます。

では、いつものようにGoogle Chromeのデベロッパーツールで、方針を考えてみましょう。 Ctrl + Shift + I ですね。

調べてみると…

Yahoo!検索結果ページのディスクリプション

目的のディスクリプションはclass属性が「cut3」というpタグに記述されているようです。

p要素は段落を表す要素ですね。

ただ、このHTMLドキュメントにはpタグは他の部分にもたくさん使われているので、もう少し条件を絞り込まないといけません。

また、対応する記事タイトルとURLリンクもセットで取得したいですよね…

そこで、注目するのが以下のclass属性「w」のdivタグです。

Yahoo!検索結果ページのdiv要素

div要素はブロックを作るための要素ですが、このclass属性wのdiv要素は、記事タイトル、リンクURL、ディスクリプションを含んでいます。

なので、まずはこの要素をコレクションとして取得することを考えます。

class属性でdiv要素のコレクションを取得しループする

class属性がwの要素を取得すればいいので、getElementsByClassNameメソッドですね。

記事数分のコレクションで取得できますので、For Each文でループをします。

div要素からタイトル・URL・ディスクリプションを取り出す

取得したdiv要素の中に、a要素とp要素は1つずつしかありませんので、それぞれgetElementsByTagNameでコレクションを取得しつつ、そのインデックス0の要素を取得してあげればOKです。

ですから、前述のコメント処理を実際の処理に書き換えると以下のようになります。

実行して動作確認をする

まとめのコードは以下のとおりです。

プロシージャを実行すると、InputBoxでキーワードの入力を求められます。

入力すると、Yahoo!検索結果ページから、以下のようなデータを抽出できます。

Yahoo!検索結果ページから取得したデータ

まとめ

以上、エクセルVBAでIEを操作してYahoo!検索結果ページからタイトル・URL・ディスクリプションを取得することができました。

次回はページャーを自動で移動しながら、2ページ目以降の記事一覧も取得する方法についてお伝えします。

【エクセルVBAでIE操作】ページャーをめくって複数ページからデータを取得する
エクセルVBAでIEを操作する初心者向けのシリーズです。今回はページャーをめくって自動でクロールする方法とその見つけ方について解説をします。Webスクレイピングの効率が格段に上がりますよ!

どうぞお楽しみに!

連載目次:エクセル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をコピーしました