初めてのIE操作(3)~HTMLソースをファイルに出力するメソッド

WebページのHTMLソースを出力するメソッド

前々回、

akashi-keirin.hatenablog.com

前回

akashi-keirin.hatenablog.com

の続き。

Webページ/アプリを操作するには、HTMLがどうなっているのかを知らなければどうにもならない。

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ディレクトリに、

f:id:akashi_keirin:20181216205123j:plain

この通りakashi_keirin_src.htmlというファイルができている。

エディタで開いてみると、

f:id:akashi_keirin:20181216205134j:plain

一瞬ぎょっとするような画像だが、よく見ると確かにHTMLソースである。

ここまで来たらリーチがかかったようなもん。オープンリーチかも知れんけど。

HTMLの要素を解析して、操作対象を特定して操作するだけ。それは次回。

参考

akashi-keirin.hatenablog.com

akashi-keirin.hatenablog.com

akashi-keirin.hatenablog.com

akashi-keirin.hatenablog.com

akashi-keirin.hatenablog.com