C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[2]: javascriptで生成されるhtmlを取得したい


(過去ログ 126 を表示中)

[トピック内 4 記事 (1 - 4 表示)]  << 0 >>

■74991 / inTopicNo.1)  javascriptで生成されるhtmlを取得したい
  
□投稿者/ ホゲ (1回)-(2015/02/16(Mon) 16:05:31)

分類:[.NET 全般] 

VB.NETを使用しています。
javascriptで生成されるhtmlを確実に取得できる方法を探しています。

IEから特定のページのコンテンツを取得するプログラムを作成しています。
そのページのHtmlコードとコンテンツはJavascriptから生成されています。
連続でプログラムを動かすと、コンテンツを取得できる時、出来ない時があります。
ページの読み込み完了はDocumentCompleteイベントで判断しています。

知恵をお貸しください。よろしくお願いいたします。

Public Class Form1
Dim WithEvents IE As SHDocVw.InternetExplorer
Dim ihtml As mshtml.IHTMLElement = Nothing

Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click
IE = New SHDocVw.InternetExplorer
IE.Visible = True
IE.Navigate("http://www.test.com")

Dim ihtml As mshtml.IHTMLElement = Nothing
ihtml = dhtml.GetElementById("hoge") '★IDのhogeはあるが、コンテンツが空のことがあります。

End Sub
Private Sub IE_DocumentComplete(pDisp As Object, ByRef URL As Object) Handles IE.DocumentComplete
ihtml = DirectCast(pDisp.Document, mshtml.IHTMLDocument)
End Sub
End Class
引用返信 編集キー/
■74992 / inTopicNo.2)  Re[1]: javascriptで生成されるhtmlを取得したい
□投稿者/ ホゲ (2回)-(2015/02/16(Mon) 16:20:58)
すみません、一部コードを間違えていました。
正しくはこちらです。


Public Class Form1
Dim WithEvents IE As SHDocVw.InternetExplorer
Dim _doc As mshtml.IHTMLDocument = Nothing

Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click
IE = New SHDocVw.InternetExplorer
IE.Visible = True
IE.Navigate("http://www.test.com")

Dim ihtml As mshtml.IHTMLElement = Nothing
ihtml = _doc.GetElementById("hoge") '★IDのhogeはあるが、コンテンツが空のことがあります。

End Sub
Private Sub IE_DocumentComplete(pDisp As Object, ByRef URL As Object) Handles IE.DocumentComplete
_doc = DirectCast(pDisp.Document, mshtml.IHTMLDocument)
End Sub
End Class
引用返信 編集キー/
■74997 / inTopicNo.3)  Re[1]: javascriptで生成されるhtmlを取得したい
□投稿者/ 魔界の仮面弁士 (210回)-(2015/02/16(Mon) 17:54:20)
No74991 (ホゲ さん) に返信
> IE.Navigate("http://www.test.com")
こういう場合には、「例示用のドメイン名」として予約されている
 example.com
を使った方が良いですよ。
http://wa3.i-3-i.info/word11843.html


> ページの読み込み完了はDocumentCompleteイベントで判断しています。

DocumentComplete / DocumentCompleted は、文書の DOM 解析が完了したことを
示すだけで、JavaScript の操作が完了したかどうかの検知では無いと思います。

id="hoge" な要素がどのタイミングで生成されるのか分からないので確認できませんが、
たとえば、window.onload で検知することはできないでしょうか?
http://stackoverflow.com/questions/18368778/getting-html-body-content-in-winforms-webbrowser-after-body-onload-event-execute
引用返信 編集キー/
■75006 / inTopicNo.4)  Re[2]: javascriptで生成されるhtmlを取得したい
□投稿者/ ホゲ (3回)-(2015/02/17(Tue) 16:52:01)
No74997 (魔界の仮面弁士 さん) に返信
> ■No74991 (ホゲ さん) に返信
>>IE.Navigate("http://www.test.com")
> こういう場合には、「例示用のドメイン名」として予約されている
>  example.com
> を使った方が良いですよ。
> http://wa3.i-3-i.info/word11843.html

ありがとうございます。


>>ページの読み込み完了はDocumentCompleteイベントで判断しています。
>
> DocumentComplete / DocumentCompleted は、文書の DOM 解析が完了したことを
> 示すだけで、JavaScript の操作が完了したかどうかの検知では無いと思います。
>
> id="hoge" な要素がどのタイミングで生成されるのか分からないので確認できませんが、
> たとえば、window.onload で検知することはできないでしょうか?
> http://stackoverflow.com/questions/18368778/getting-html-body-content-in-winforms-webbrowser-after-body-onload-event-execute


window.onloadで検知できるのは理想ですね。
実装する方法を探してみます。
早速のご回答ありがとうございます。

引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -