pagetaka

写真、PC、ネット、岡山、旅の話題をお届けします

VBA:ExcelとIEの連携04

f:id:PageTAKA:20140608090539j:plain

キーワード:スクレイピング

ネット徘徊してまして、「スクレイピング」という言葉に行き当たりました。

HTMLデータを直接取得しつつ処理」というところがTAKAが現在欲していることなわけです。情報だけ得ることができれば、InternetExplorerに対象となるURLの内容表示する必要はないという、横着の発想なわけです。

表示をしないという方法でとりあえず ie.Visible = False

Sub ieURL2()
'IEを使えるようにします
Dim ie As InternetExplorer
Set ie = CreateObject("internetexplorer.application")
'変数 aUrl を用意して、ここに西大寺電子町内会のURLを設定します。
Dim aUrl As String
aUrl = "http://b.saidaiji.org/"

'ieを呼び出し、aUrlに設定した西大寺電子町内会のURLを呼び出します。
ie.Visible = False
ie.Navigate aUrl

'読み込み完了待ちの循環
Do While ie.Busy Or ie.ReadyState < READYSTATE_COMPLETE
    DoEvents
    Debug.Print "/";
Loop
    Debug.Print vbCr


'ieからHTMLタグのh2を取得し、イミディエイト窓に表示
Dim h2s As Object
For Each h2s In ie.Document.body.getElementsByTagName("h2")
    Debug.Print h2s.innertext
Next

'終了
ie.Quit
Set ie = Nothing


End Sub

WordPressでのHTMLタグの構成が変わっていた

WordPressで表示された中からHTMLタグの「h2」をVBE「イミディエイト」窓に抽出表示するのが上のスクリプトです。

最初「h1」タグを対象にしていたのですが、ブログタイトルだけしか表示されませんでした。比較的新しい別サイトでは、キッチリ表示されます。

あ~そうか、HTMLバージョンが4から5へ移っていることが関係していると…。HTMLバージョン4までは、一画面に「h1」タグは一個のみ、という原則がありました。文書情報の意味づけの大切な目印になっていたわけです。これが、HTMLバージョン5になってから取り払われました。この結果、西大寺電子町内会blogでは、使っているWordPressのバージョンの関係でh1がひとつだったわけです。

それで対象を「h2」に変えたら、今度は別の問題が発生しました。サイドバーなどに「h2」が使われているのです。

そして、ここでも横着な気づきが…。わざわざ本体内のHTMLを読むより、RSSがついているんだから、それを読んだ方が早いのでは…。さて…。