キーワード:スクレイピング
ネット徘徊してまして、「スクレイピング」という言葉に行き当たりました。
「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がついているんだから、それを読んだ方が早いのでは…。さて…。