sslの件では大変ありがとうございました。
連続質問で恐縮ですが、
winhttpにて取得したhtmlページがあります。
これをdom化して、各ノード(タグ)の情報を取得することは可能なのでしょうか
dim winHTTP as object
Set winHTTP = CreateObject("WinHttp.WinHttpRequest.5.1")
Dim XMLDocument As MSXML2.DOMDocument
Set XMLDocument = New MSXML2.DOMDocument
winHTTP.Open GET, strURL, False
winHTTP.Send ()
Byte() = winhttp.resposeBody
---- バイト文字列をファイルに保存---
debug.print XMLDocument.Load(保存ファイル名)
ここまで
細かい部分は省略しています。
ポイント
(1)winhttpで取得できる形式は、
winHTTP.ResponseBody
winHTTP.ResponseStream
wihHTTP.ResponseTextで、responseXMLがない
(2)取得するドキュメントはHTML文書で、XML文書ではない
(3)responseBodyで得られるバイナリ文字列を一度ファイルに保存して
そのファイルを読んだところ.PerseError -1072896760 でした
とくにMSXML2.DOMDocumentにはこだわっていません。
webBrowserのDocumentオブジェクトのように使用できれば
それでよいです。また、ファイルに保存しない方法があればなおよいです。
なにとぞよろしくお願い致します
> wihHTTP.ResponseTextで、responseXMLがない
単純に、ResponseStream では駄目なのでしょうか?
得られたストリームを、そのままパーサに読ませるだけで良いような…。
> 取得するドキュメントはHTML文書で、XML文書ではない
であれば、MSXML では駄目でしょう。MSHTML を使ってみてください。
> そのファイルを読んだところ.PerseError -1072896760 でした
非 XML 文書だからでしょう。
とりあえず、こんな感じ。
参照設定用のタイプライブラリは、別途用意してください。
Dim doc As MSHTML.HTMLDocument
Set doc = New MSHTML.HTMLDocument
Dim stm As IPersistStreamInit
Set stm = doc
stm.Load wihHTTP.ResponseStream
Set stm = Nothing
Debug.Print doc.documentElement.outerHTML
弁士様、いつもありがとうございます
doc html vb6 等で検索したのですがなかなか出てこず、、
IPersisStremaInitだと一発ですね。
とりあえず先にすすめます。
本当にありがとうございました
ツイート | ![]() |