第十七回目 ウインドウズマクロ入門 その4

第十七回目はウインドウズマクロ入門 その4について。

前回はGoogleにアクセスして検索キーワードを自動入力して、検索ボタンをクリックし、検索結果を全て取得する、というスクリプトを紹介しました。

今回は少し発展させて、自分が調べたいURLは、そのキーワードで検索した時に、何ページ目の何位なのか? を調べるスクリプトへと改造します。

ポイントは、Googleで検索結果を取得したら、そのデータを種類ごとに分類し、URLだけを抜き出して、調べたいURLと比較することです。

難しいのは、Googleの検索結果は、検索結果の他に、アドワーズ広告やGoogle自体への内部リンクというノイズが含まれていることです。

これらはデータを特徴ごとに分類し、分割し、その後に比較したいURLとマッチングをさせます。

これでオリジナルの検索順位調査ツールが出来上がります。

▼サンプルファイルダウンロード

/////////////////////////////////////////////////////////////////////
// Google自動検索 ver3.0
/////////////////////////////////////////////////////////////////////

//←をつけるとその後はコメントアウトされます

//検索キーワードを入力するためのボックスを表示する
//入力されたデータは変数 KEYWORDに代入される
KEYWORD = INPUT( “検索キーワードを入力して下さい” )

//調査URLを入力するためのボックスを表示する
//入力されたデータは変数 SEARCH_URLに代入される
SEARCH_URL = INPUT( “調査したいURLをhttp://から入力して下さい” )

//IEを呼び出す(※固定文なので気にしないで下さい)
IE = CreateOLEObj(“InternetExplorer.Application”)

//URLをセットする
IE.Navigate(“http://www.google.co.jp/”)

//表示する
IE.Visible = True

//接続表示待ち処理(※固定文なので気にしないで下さい)
while True
if ( ! IE.busy ) and ( IE.readyState = 4 ) then Break
sleep( 0.1 )
wend

//Googleが表示される
//ボタンやテキストボックスの操作開始

// ラジオボタン選択:日本語のページを検索
IESetData( IE, True , “lr” , “lang_ja” )

// 文字設定:検索単語
IESetData( IE , KEYWORD , “q” )

//検索ボタンをクリック
IESetData( IE , True , “btnG” , “Google ” )

//Googleの検索結果待ち

//接続表示待ち処理(※固定文なので気にしないで下さい)
while True
if ( ! IE.busy ) and ( IE.readyState = 4 ) then Break
sleep( 0.1 )
wend

//リンクカウント用変数を初期値1にセットする
cnt = 1
//ページカウント用変数を初期値1にセットする
page_num = 1

//リンク合計数を取得する
//リンク数合計はIE.Document.links.lengthで分かる
link_amount = IE.Document.links.length

//リンク合計数分だけループして一致するか調査
for link_num = 0 to ( link_amount – 1 )

//IEオブジェクトから、リンクの要素をgeturl変数に代入する
//ページ内のリンク数合計が分かる
geturl = IE.document.links[ link_num ].href

//リンクを分類する
//google関連のURLは除く(グーグルのキャッシュやyoutubeも除く)
ifb pos( “google” , geturl ) = 0 AND pos( “youtube” , geturl ) = 0 AND pos( “q=cache:” , geturl ) = 0

//内容をウインドウに表示する
print cnt + ” ” + “URL:” + geturl

//調査URLとgeturlが一致すればビンゴ!
ifb pos( search_url , geturl ) >= 1

//ウインドウを出して知らせる
msgbox( page_num + “ページ目の ” + cnt + ” 番目に” + geturl + ” がヒットしました<#CR>” + “OKボタンを押した後にALT + F2キーで停止できます” , BTN_OK )

//内容をウインドウに表示する
print page_num + “ページ目の ” + cnt + ” 番目に” + geturl + ” がヒットしました”

endif

//カウントアップする
cnt = cnt + 1

endif

next

//次へリンクが存在している間繰り返す
while IELINK( IE, “次へ” )

//接続表示待ち処理(※固定文なので気にしないで下さい)
while True
if ( ! IE.busy ) and ( IE.readyState = 4 ) then Break
sleep( 0.1 )
wend

//ページ数をカウントアップする
page_num = page_num + 1

//リンク合計数を取得する
//リンク数合計はIE.Document.links.lengthで分かる
link_amount = IE.Document.links.length

//リンク合計数分だけループして一致するか調査
for link_num = 0 to ( link_amount – 1 )

//IEオブジェクトから、リンクの要素をgeturl変数に代入する
//ページ内のリンク数合計が分かる
geturl = IE.document.links[ link_num ].href

//リンクを分類する
//google関連のURLは除く(グーグルのキャッシュやyoutubeも除く)
ifb pos( “google” , geturl ) = 0 AND pos( “youtube” , geturl ) = 0 AND pos( “q=cache:” , geturl ) = 0

//内容をウインドウに表示する
print cnt + ” ” + “URL:” + geturl

//調査URLとgeturlが一致すればビンゴ!

ifb pos( search_url , geturl ) >= 1

//ウインドウを出して知らせる
msgbox( page_num + “ページ目の ” + cnt + ” 番目に” + geturl + ” がヒットしました<#CR>” + “OKボタンを押した後にALT + F2キーで停止できます” , BTN_OK )

//内容をウインドウに表示する
print page_num + “ページ目の ” + cnt + ” 番目に” + geturl + ” がヒットしました”

endif

//カウントアップする
cnt = cnt + 1

endif

next

wend

print “処理終了”

今回はここまで!

関連記事