こんにちは!あつもり(@atumori17)です。
VBScriptでIEを操作してWEBスクレイピング!の第3回目で~す。
前回はファイルシステムオブジェクトでテキストファイルに書き出すスクリプトを紹介しました。
テキストファイルに書き出す準備ができたところで、いよいよIEを操作してHTMLドキュメントを取得してみたいと思います。
今回はWEBサイトのタイトル名を、titleタグを使って取得する方法を紹介します。
HTMLドキュメントを取得してタイトル名をテキストファイルに書き出すスクリプト
テキストエディタ開き下記のコードを入力します。全て入力し終わったら「title取得.vbs」などのファイル名でデスクトップに保存します。
Option Explicit Dim objIE Dim objLink Set objIE = CreateObject("InternetExplorer.Application") objIE.Visible = True 'IEを開く objIE.navigate "http://google.co.jp/" 'タイトルをテキストファイルに書き出す OutputText objIE.document.Title 'テキストファイルへ出力 Function OutputText(ByVal strMsg) Dim objFSO Dim objText 'ファイルシステムオブジェクト Set objFSO = WScript.CreateObject("Scripting.FileSystemObject") ’テキストファイルを開く Set objText = objFSO.OpenTextFile("C:\work\title.txt", ForAppending, True) objText.write strMsg objText.write vbCrLf objText.close 'オブジェクト変数をクリア Set objFSO = Nothing Set objText = Nothing End Function
プログラムコードの解説
全体の流れは以下のようになります。
- IEでページを開く
- ページ全体の情報からタイトル名を抜き出す
- 抜き出したタイトル名をテキストファイルに保存する
IEで指定したページを開くところまでは前回ご説明しました。今回はページを開いた後の処理から説明していきます。
タイトル名をtitleタグから取得する
タイトル名を取得する前にHTMLとは何かを簡単に説明したいと思います。WEBスクレイピングでWEBサイトからほしい情報を取得するために、ある程度のHTMLの知識が必要になってくるからです。
HTMLとは
HTMLとはホームページを書くため言語で、ルールに沿って文章にマークをつける記述方法になります。
たとえばページのタイトルをHTMLで書くと下のようになります。
<title>いつも隣にITのお仕事</title>
すっごくシンプルですよね。<title></title>で囲まれた部分がページのタイトルとして表示されます。
この<title>の部分をタグと言います。タグを使ってページ内の文章に意味づけをしてあげるんですね。意味づけしてあげることで、ブラウザが<title>のところはタイトルで表示しよう!とか<strong>で囲まれたところは強調して太字で表示しよう!とかの判断ができるわけです。
タグには他にも色々あってWEBサイトへのリンクを表す<a>タグや、表を表す<table>タグなどがあります。
HTMLを書いてブラウザで開いてみようっ!
実際にコードを書いてみてブラウザで表示してみると何となく感じがつかめると思います。とっても簡単ですので早速やってみましょう。
まずテキストエディタで下記のようなコードを書いてファイル名を「サンプル.html」などとしてデスクトップに保存してみてください。
<html> <head> <title>いつも隣にITのお仕事</title> </head> <body> <h2>見出し</h2> <strong>強調して太字にする</strong> </body> </html>
ダブルクリックすると以下のようなページが開きます。
WEBスクレイピングとは、このようなHTMLドキュメントの中から取得したいタグ名を検索して、そのタグ名で囲まれた内容を取ってくるテクニックになります。
今回の場合はページのタイトルを取得したいので、上記の例でいくと<title>タグで囲まれた「いつも隣にITのお仕事」を取得する、ということになります。
では実際にタイトル名を取得する方法について説明していきます。
documentプロパティからタイトル名を取得する
と書くことでIEで読み込んだWEBページ全体からタイトル名を取得することができます。
そして取得したタイトル名をテキストファイルに書き出します。テキストファイルの書き出しは前回の記事を参考にしてみてください。
アプリケーションを実行してみる
では実際に起動してみます。デスクトップにある「titleタグ取得.vbs」をダブルクリックして起動します。
あれ~?エラーメッセージが表示されてしまいましたね。これにはきちんとした理由がありますので心配ありませんよ~。
その理由とはブラウザの読み込み待ち処理を行っていないからです。ブラウザの読み込み処理については次回詳しくご説明します。今回は以上です。
まとめ
いかかでしたか?今回の内容をまとめると以下のようになります。
- WEBスクレイピングを行うにはHTMLの知識がある程度必要になる
- document.titleプロパティからWEBページのtitleが取得できる
- ブラウザの読み込み待ち処理を入れないで、タイトルを取得しようとするとエラーになる
今回は以上です。それではお疲れさまでした~。
連載目次:VBScriptでお手軽WEBスクレイピング
Windowsを操作できるプログラミング言語「VBScript」を使えば、InternetExplorerを操作してWEBスクレイピングが可能です。 これで日々の情報収集はダブルクリック一発で完了させましょう!- VBScriptでInternet Explorerを使って複数WEBサイトをダブルクリック一発で開く方法
- VBScriptでWEBスクレイピング!ファイルシステムオブジェクトでテキストに書き出す
- VBScriptでWEBスクレイピング!HTMLドキュメントとタイトルを取得する方法
- VBScriptでWEBスクレイピング!ブラウザの読み込み待ちをしてエラーを回避する
- VBScriptでWEBスクレイピング!aタグのリンクURLを全部取得する方法
- VBScriptでWEBスクレイピング!aタグのリンクURLをHTMLとして書き出す
- VBScriptでWEBスクレイピング!hタグを取得してHTMLとして書き出す
- VBScriptでWEBスクレイピング!テーブル要素を取得してCSVファイルで書き出す
- VBScriptでWEBスクレイピング!アメブロの管理画面に自動でログインする方法
- VBScriptでWEBスクレイピング!アメブロの投稿記事一覧をテキストファイルに書き出す方法