【エクセルVBAでIE操作】ブログの記事一覧ページから公開日とカテゴリを取得する

★気に入ったらシェアをお願いします!


collection

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

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

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

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

ブログサイトの記事一覧をWEBスクレイピングで取得すべく、まずはトップページの記事一覧から記事タイトルとそのURLを取得ました。

今回は記事タイトル、URLに加えて、記事公開日とカテゴリも取得してみたいと思います。

色々なパターンを取得しながらスキルアップですよ!

どうぞよろしくお願いいたします!

前回のおさらい:トップページの記事一覧から記事タイトルとURLを取得するプログラム

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

elListに記事一覧を囲うid=”list”のdiv要素を格納しているのですが、このdiv要素を展開してみますと…

こんな感じです。

まずid=”list”のdiv要素の直下の子要素たちが各記事を囲うdiv要素のコレクションになっています。

その各記事のdiv要素の中にはh2タグが一つだけですのでそれをelH2というオブジェクト変数に格納して、記事タイトルとURLを取得しました。

今回の方針:公開日とカテゴリを取得

各記事のdiv要素の中の

  • class=”published”のspanタグ内のテキストが公開日
  • class=”category”のspanタグ配下のaタグ内のテキストがカテゴリ

です。

今までのテクニックでなんとか取得できそうですね。

各記事の公開日とカテゴリも取得するプログラム

上記プログラムの31行目と33行目の間に、こちらの処理を追加します。

また、25行目の前に各変数の宣言

も忘れずに!

さて、プログラムの解説ですが、公開日を取得して出力するのはそれほど難しくはありませんね。class=”published”のspanタグ内のテキストが公開日です。

一方で、カテゴリは少し厄介です。class=”category”のspanタグ配下のaタグ内のテキストとして記載されていますが、そのaタグが複数存在する場合があるからです。

手順としては

  1. class=”category”の1番目の要素配下のa要素をコレクションとしてcolAnchorに取得
  2. コレクション内の全てのa要素について内部のテキストを取得
  3. そのテキストを文字列型の変数strCateに「, 」で連結
  4. LeftとLenで最後の余計な「, 」を削除
  5. strCateを出力

という流れになります。

これで実行をしてみると

記事一覧をdebug print

記事タイトル、URL、公開日、カテゴリときちんと出力されます。

カテゴリが複数ある場合は「Google Apps Script, データ分析・アクセス解析」などといったように、「, 」で連結されて出力されます。

まとめ

これで、VBAでInternet Explorerを操作してトップページの記事リストから記事タイトル、URL、公開日、カテゴリを取得できるようになりました。

しかしながら、記事数が20を超える場合が次のページもクロールしないといけませんよね。

次回はページャーを自動で移動しながら、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操作】IEで検索窓にキーワードを入力して送信する方法
  9. 【エクセルVBAでIE操作】ページをクロールしてブログの記事一覧を取得する方法
  10. 【エクセルVBAでIE操作】ブログの記事一覧ページから公開日とカテゴリを取得する
  11. 【エクセルVBAでIE操作】ページャーを最後のページまでどんどんリンクする
  12. 【エクセルVBAでIE操作】ユーザー名とパスワードを入力してログインをする

連載目次:データ一覧から請求書を自動で作る

お仕事において特定のデータ一覧から必要な情報を抽出するということは頻繁にありうると思います。ここではデータ一覧から請求書を作るということを目標に、実務で使えるスキルをまっすぐに身に着けることを目的としています。
  1. 【初心者向けエクセルVBA】データ一覧から請求書を自動で作る
  2. 【初心者向けエクセルVBA】For~Next文で簡潔にプログラムを書く
  3. 【初心者向けエクセルVBA】行の数をカウントする&不要な行を隠す
  4. 【初心者向けエクセルVBA】文字列の連結&Format関数での書式変更
  5. 【初心者向けエクセルVBA】If~Thenを使った条件分岐の超入門
  6. 【初心者向けエクセルVBA】Public変数の宣言とSubプロシージャの呼び出し
  7. 【初心者向けエクセルVBA】InputBoxでの日付入力と月末日の自動算出
  8. 【初心者向けエクセルVBA】Worksheetのコピーを活用して複数の請求書を作る
  9. 【初心者向けエクセルVBA】ファイルのコピーを使って取引先別の請求書を作る
  10. エクセルVBAでDateAdd関数を使って年月を条件としてSumIfs関数を使う方法
  11. 宣言もセットも不要!エクセルVBAでワークシートをオブジェクト名で取り扱う方法
  12. エクセルVBAでシートの列の挿入も簡単に対応できちゃう列挙体の使い方