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になってしまいます。
Sub GetRequestSimple_Header()
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
Dim s As String
s = xh.ResponseText
Debug.Print Left(s, 500) 'あくまでデモとして出力。実際にはもっとしっかり解析します。
End Sub
Sub GetRequestSimple_Header()
> 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
>
> Dim s As String
> s = xh.ResponseText
> Debug.Print Left(s, 500) 'あくまでデモとして出力。実際にはもっとしっかり解析します。
>
>End Sub
伊久間博之さんの投稿
(投稿ID: 1960)
WinHttp Services 5.1を使ってとってきたDOMを使った解析についてわからないことがありますので質問させてください。
metaタグのコレクションが取得できません。
JR東日本から(http://www.jreast.co.jp/)から
metaタグを抜き出そうとして以下のコードを書きました。
が、取得できません。
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ないの要素を取得することができるのでしょうか?
ゲストさんのコメント
(コメントID: 3339)
htmlヘッダーの中身を MSHTML.HTMLDocument で取得する方法は僕も知らないのですよ。
いろいろ調べているのですが、なぜか見つけられないです。
ということで、文字列として取得して Instr 関数等を使ってガシガシ解析するのはどうでしょうか。
Instr関数を使って <meta を探し、 Instrrev関数を使って </head 探せば、その間に答欲しい文字列がいそうですね。
伊久間博之さんのコメント
(コメントID: 3343)
なるほど。そうなんですね。
ガシガシ解析するか、Internet Controlsを使って解析するか、状況に応じて使い分けてみることにします。
ありがとうございます。m(_ _)m
>伊久間博之 さん:
>
>htmlヘッダーの中身を MSHTML.HTMLDocument で取得する方法は僕も知らないのですよ。
>いろいろ調べているのですが、なぜか見つけられないです。
>
>ということで、文字列として取得して Instr 関数等を使ってガシガシ解析するのはどうでしょうか。
>
>
>
>Instr関数を使って <meta を探し、 Instrrev関数を使って </head 探せば、その間に答欲しい文字列がいそうですね。
>
ゲストさんのコメント
(コメントID: 3351)
結局、ガシガシ解析するとしたら、基礎編、発展編1で学んだ知識も総動員ですね。
そして、伊久間は地味にスキルが定着している方なので「状況に応じてつかいわけられる」と言えるのが強みですね☆
>小川慶一 さん:
>
>なるほど。そうなんですね。
>ガシガシ解析するか、Internet Controlsを使って解析するか、状況に応じて使い分けてみることにします。
>ありがとうございます。m(_ _)m