度々申し訳ありません。
また分からないことが出てしまいました。(><;)
IE = CreateObject("InternetExplorer.Application")
IE.Navigate(Url)
でインターネットエクスプローラーを開いて
その中の
下記のようなコードで<a href="JavaScript:mySubmit('10')">テスト</a>
というリンクをクリックして表示されたページの内容(htmlのテキスト部分)を
変数Html1に読み込みたいのですが、空っぽになってしまいます。
対象のページはJavascriptやhtmlが書かれています。
試しに
Dim a As String = "http://www.yahoo.com"
でやると正常に読み込まれるのですが、
この場合どこを修正したらできるでしょうか?
またなにかのアドバイスを頂けたら助かります。m(_ _"m)ペコリ
Dim a As String = "javascript:Submit('10')"
With IE
.Navigate(a)
Do While .Busy = True
Loop
Do While .document.ReadyState <> "complete"
Loop
Dim Html1
Dim body As Object
Dim Doc As Object = CallByName(IE, "Document", CallType.Get)
Try
body = CallByName(Doc, "body", CallType.Get)
Html1 = CallByName(body, "innertext", CallType.Get)
Finally
If Not IsNothing(body) Then
Marshal.ReleaseComObject(body)
End If
body = Nothing
End Try
すみません。書き忘れてしまいました。
VB.NETでやっております。
DHTMLの動作により、ブラウザ上のHTML構造は、
スクリプトの実行結果の影響を受けますよね。
ペンギンくんさんが知りたいのは、IEを右クリックしたときの
『ソースの表示』で表示される、元々のHTMLですか?
それとも、DHTML操作の影響を受けた後のHTMLですか?
前者であれば、IPersistStreamInitインターフェイスを使います。
後者であれば、.documentElement.outerHTML で取得できます。
また、フレームを切ってあるページの場合は、各フレームごとに
ソースを取得する必要があります。(面倒なので、サンプルは省略(^^;))
魔界の仮面弁士さん。アドバイスありがとうございます。
得たいのは右クリックで表示される分なので、
IPersistStreamInitを使ってやってみたいと思います。
ありがとうございました。
こんばんは。
IPersistStreamInitについていろいろ調べてみたのですが、
良く分からず、IPersistFileの下記の例があったので試してみたのですが、
これだとテキスト部分を抜き取ってしまいました。
HTMLを読み取るにはどこを変えたら良いでしょうか?
もしIPersistStreamInitでないとできないというのであれば、
ヒントだけ教えて頂けると助かります。
Dim a As String = "javascript:Submit('10')"
With IE
.Navigate(a)
Do While .Busy = True
Loop
Do While .document.ReadyState <> "complete"
Loop
'IPersistFileインターフェイスにて保存()
Dim PF As UCOMIPersistFile = DirectCast(IE.document, UCOMIPersistFile)
PF.Save("c:\testhtml.txt", False)
> これだとテキスト部分を抜き取ってしまいました。
*.txt ではなく、*.html または *.htm ファイルに保存しましょう。
できました!
ファイル名を変えると内容が変わるなんて思いませんでした。(><)
助かりました。ありがとうございました。
できました!
お騒がせして申し訳ありませんでした。
ツイート | ![]() |