VBScriptでWEBスクレイピング!アメブロの投稿記事一覧をテキストファイルに書き出す方法

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


こんにちは!あつもり(@atumori17)です。

VBScriptでIEを操作してWEBスクレイピング!の第10回目で~す。
前回は「アメブロのブログ管理画面に自動ログインする」ところまでやりました。

VBScriptでWEBスクレイピング!アメブロの管理画面に自動でログインする方法
IEを使ってアメブロのログイン画面にアクセスし、ID、パスワードを入力して自動ログインしていく方法を説明していきます。For each文でコレクションとして取得したa要素ぶんだけ繰り返しinnerTextプロパティを使いa要素のテキスト内に「ログイン」という文字があるかを調べクリックさせます。

今回は「アメブロの投稿記事一覧をテキストファイルに書き出す」方法を紹介します。

アメブロのブログ管理画面に自動ログインして、1月から12月までの投稿記事のタイトル名をテキストファイルに書き出していきます。

全10回に渡ってVBScriptを使ったWEBスクレイピングのテクニックを紹介してきましたが、その集大成となる内容です。今までやってきたことのおさらい的な内容になっています。

アメブロの管理画面に自動ログインするスクリプト

ではまずスクリプトの全文を紹介します。テキストエディタを開き下記のコードを入力します。全て入力し終わったら「アメブロ記事一覧取得.vbs」のファイル名でデスクトップに保存します。

プログラムコードの解説

全体の流れは以下のようになります。

  1. IEでアメブロのログイン画面を開く
  2. ログインボタンをクリックする
  3. ID、パスワードを入力する
  4. ログインボタンをクリックする
  5. 記事編集画面に移動する
  6. 1月から12月までの各ページを読み込み、h2要素をテキストファイルに書き出す

1~4までは前回の記事で紹介していますので、5~6の流れを解説していきます。

a要素のコレクションから記事の編集削除を探しクリックする

まずはFor each文でコレクションとして取得したa要素ぶんだけ繰り返す処理を行います。続いてinnerTextプロパティでa要素をテキストとして取得し「記事の編集・削除」という文字があるかを調べます。

指定した文字が含まれているかを調べるにはinstr関数を使うんでしたね。文字が見つかったらclickメソッドを使ってリンクをクリックさせます。

ここまでは前回説明しましたログインをクリックする流れと同じですね。

上記プログラムコードの17~23行目になります。

getElementByIdメソッドで年を取得する

記事の編集画面が表示されたところで、まずは画面の左上にある「2017年」を取得してテキストデータに書き出します。年を取得するにはどうしたらいいんでしょう?

まずはこのページのソースを表示させてみます。年を取得するにはidが「entryYear」の要素を取得すれば良さそうです。

特定のidの要素を取得するにはgetElementByIdIDメソッドを使います。

HTMLドキュメント.getElementById(“ID名”)

今回の場合、id名が「yearText」のテキストデータを取得したいので、次のようにします。上記プログラムコードの54~55行目になります。

a要素から月を探し1月から12月まで順番にページを読み込む

続いて1月から12月まで順番にページを読み込みh2要素を取得していきます。

For文で1月から12月まで繰り返し、a要素にその月があったらページを読み込んでいます。

上記プログラムコードの59~66行目になります。

getElementsByTagNameメソッドでh2要素を書き出す

1月から12月までページを順に読み込み、テキストファイルの書き出していきますが、どの月なのかが後でわからないと不便です。そこでまずは読み込んだ月をテキストファイルに書き出します。
上記プログラムコードの70~71行目になります。

月をテキストファイルに書き出したら今度は記事のタイトル一覧を書き出していきます。

記事のタイトルはh2要素なので、getElementsByTagNameメソッドを使いタグ名で要素を取得します。

取得したh2要素のコレクションをFor each文で1つ1つの要素ごとにテキストファイルに書き出します。

h2要素のテキスト部分のみを抜き出したいのでinnertextメソッドを使っています。

これは過去の記事で何度もやっているおなじみの流れですね。上記プログラムコードの73~80行目になります。

ページの読み込み待ち処理を独自関数にまとめる

最後に補足説明です。プログラムコードのあちこちでページの読み込み待ち処理をしていますが、この処理を独自関数にしてまとめています。上記プログラムコードの87~94行目になります。

独自関数にまとめることで、プログラムコードの可読性を上げるためです。

ページの読み込み待ちの処理については過去の記事で掲載していますので参考にしてみてください、

VBScriptでWEBスクレイピング!ブラウザの読み込み待ちをしてエラーを回避する
IEのページ読み込み待ちしてHTMLドキュメントからWEBサイトのタイトル名を取得する方法をご紹介します。面倒なようですがWEBスクレイピングはIEがページ全体を読みむまで待ってあげてから、データを取得するという手順を踏まなければならないからです。

プログラムコードの解説は以上です。

アメブロ記事一覧を取得してみる

では実際にアプリケーションを起動してみます。デスクトップにある「アメブロ記事一覧取得.vbs」をダブルクリックします。

ログイン画面が表示されました。ここで自動でログインボタンがクリックされます。

ログインボタンがクリックされ、ID、パスワード入力画面に移りました。ここではID、パスワードが自動で入力され、その後にログインボタンがクリックされます。

管理画面が表示されます。ここまでは前記事の流れと同じです。続いて1月から12月までのページを順に読み込んでいきます。

タイトル一覧がテキストファイルに書き出されました。

「アメブロ記事タイトル一覧.txt」を開くと、年、月、タイトルが書き出されています。

まとめ

今回は「アメブロの投稿記事一覧をテキストファイルに書き出す方法」をお伝えしてきました。

今回の内容をまとめると以下のようになります。

  • getElementByIdメソッドを使うとId名で要素を取得できる
  • getElementsByTagNameメソッドでh2要素を書き出す
  • ページの読み込み待ち処理を独自関数にまとめプログラムコードの可読性を上げる

以上です。

全10回に渡って「VBScriptでWEBスクレイピング」をテーマにして連載してきました。いかがでしたでしょうか?WEBスクレイピングを上手く活用して業務効率化に役立てて頂ければ嬉しいですっ。

それではお疲れさまでした~。

連載目次:VBScriptでお手軽WEBスクレイピング

Windowsを操作できるプログラミング言語「VBScript」を使えば、InternetExplorerを操作してWEBスクレイピングが可能です。 これで日々の情報収集はダブルクリック一発で完了させましょう!
  1. VBScriptでInternet Explorerを使って複数WEBサイトをダブルクリック一発で開く方法
  2. VBScriptでWEBスクレイピング!ファイルシステムオブジェクトでテキストに書き出す
  3. VBScriptでWEBスクレイピング!HTMLドキュメントとタイトルを取得する方法
  4. VBScriptでWEBスクレイピング!ブラウザの読み込み待ちをしてエラーを回避する
  5. VBScriptでWEBスクレイピング!aタグのリンクURLを全部取得する方法
  6. VBScriptでWEBスクレイピング!aタグのリンクURLをHTMLとして書き出す
  7. VBScriptでWEBスクレイピング!hタグを取得してHTMLとして書き出す
  8. VBScriptでWEBスクレイピング!テーブル要素を取得してCSVファイルで書き出す
  9. VBScriptでWEBスクレイピング!アメブロの管理画面に自動でログインする方法
  10. VBScriptでWEBスクレイピング!アメブロの投稿記事一覧をテキストファイルに書き出す方法