投稿/コメントを表示します。

こんにちは。いつもお世話になっております。

WinHttp Services 5.1を使ってとってきたDOMを使った解析についてわからないことがありますので質問させてください。
metaタグのコレクションが取得できません。


JR東日本から(http://www.jreast.co.jp/)から
metaタグを抜き出そうとして以下のコードを書きました。
Sub GetRequestSimple2()
    Dim url As String
    url = "http://www.jreast.co.jp/"

    Dim xh As New WinHttp.WinHttpRequest
    xh.Open "GET", url, False
    xh.send
    
    Dim sCode As String
    sCode = xh.Status
    If sCode <> 200 Then
        MsgBox "リクエストに失敗しました" & vbNewLine & sCode
    End If
    
    'htmlをDOMとして取得する。そのための変数を宣言。
    Dim oHTml As New MSHTML.HTMLDocument
    oHTml.body.innerHTML = xh.ResponseText 'htmlボディーをDOMとして取得
    
    Debug.Print xh.GetAllResponseHeaders
    Debug.Print oHTml.body.innerHTML 'xh.ResponseText
    Range("B1").Value = xh.GetAllResponseHeaders
    Range("B2").Value = oHTml.body.innerHTML ' xh.ResponseText
    
    Dim oM As MSHTML.HTMLHeadElement
    For Each oM In oHTml.getElementsByTagName("meta")
        Debug.Print oM.outerHTML
        Debug.Print oM.innerHTML
        Debug.Print oM.innerText
    Next
End Sub

が、取得できません。
Range("B2").Value をみると<body>以下が出力されていますので
[code] oHTml.body.innerHTML = xh.ResponseText[\code]
の body を head にすればいいのではないかと予想して
[code] oHTml.head.innerHTML = xh.ResponseText[\code]
としてみましたが、実行時エラー600になってしまいます。

調べてみるとInternet Controlsによる取得方法はいくつかあり、その方法を試したところmetaタグを取得することができました。

しかし、WinHTTP Services 5.1による取得方法を見つけられず、質問させて頂きました。

どのようにすればmetaタグ、headないの要素を取得することができるのでしょうか?
2016/02/08 02:03