初めてのIE操作(3)~HTMLソースをファイルに出力するメソッド
WebページのHTMLソースを出力するメソッド
前々回、
前回
の続き。
Webページ/アプリを操作するには、HTMLがどうなっているのかを知らなければどうにもならない。
ただし、前回すでに起動中のIEオブジェクトを捕まえて、Document
オブジェクトを取得するところまで行っているので、楽勝である。
targetIE.Document.all(0).outerHTML
たったこれだけ。
さすがにこれだけだと面白くないので、取得したHTMLソース文字列をファイルに出力できるようにした。
コード
リスト1 標準モジュール
Private Sub appendTextToFile(ByVal fileFullName As String, _ ByVal targetText As String) Dim n As Long n = FreeFile(0) Open fileFullName For Append As n Print #n, targetText Close #n End Sub
コイツを利用して、取得したHTMLソースをファイルとして保存するようなFunction
を作る。
リスト2 標準モジュール
Public Sub createHTMLSource(ByVal targetIE As InternetExplorer, _ ByVal sourceName As String) Call appendTextToFile( _ ThisWorkbook.Path & "\" & sourceName & "_src.html", _ " targetIE.Document.all(0).outerHTML) Set targetIE = Nothing End Sub
Document.all(0).outerHTML
で取得した文字列をappendTextToFile
メソッドに渡して、ThisWorkbook
と同じディレクトリにファイルを出力するメソッド。
出力場所まで指定したければ引数を増やせば良い。
使ってみる
次のコードで実験。
リスト3 標準モジュール
Public Sub test() Dim targetIE As New InternetExplorer With targetIE .Visible = True Call .Navigate("http://akashi-keirin.hatenablog.com/entry/2018/12/16/001606") Do While .Busy Or _ .readyState <> READYSTATE_COMPLETE DoEvents Loop End With Set targetIE = getIEByTitle("素人が") Call createHTMLSource(targetIE, "akashi_keirin") End Sub
例によって、テキトーにブレークポイントを設置して、手動待機(w)しながら実行してみる。
実行結果
実行してみると、ThisWorkbook
のディレクトリに、
この通りakashi_keirin_src.html
というファイルができている。
エディタで開いてみると、
一瞬ぎょっとするような画像だが、よく見ると確かにHTMLソースである。
ここまで来たらリーチがかかったようなもん。オープンリーチかも知れんけど。
HTMLの要素を解析して、操作対象を特定して操作するだけ。それは次回。