VisualBasic2005Professionalで勉強中の者です。WebBrowser1に、2つのフレーム(各フレームののnameはFrame1、Frame2とします)に分割されたページが表示されているとします。このうちFrame2のDocumentTextを取得するにはどうすればよいでしょうか。具体的なコードをご教示頂ければと思います。

回答の条件
  • 1人2回まで
  • 登録:2006/08/01 22:01:47
  • 終了:2006/08/04 21:16:44

ベストアンサー

id:KirakiraHikaru No.1

KirakiraHikaru回答回数354ベストアンサー獲得回数682006/08/01 22:36:24

ポイント100pt

DocumentText自体はないのですが、下記のようにしてそのフレームのHtmlDocumentオブジェクトを取得できます。

WebBrowser1.Document.Window.Frames.Item("Frame2").Document

上記のItem("Frame2")の部分に名前を指定すると、そのFrameが取得できます。

また、Item(0).Documentという風に番号指定にすると1番目のFrameのHtmlDocumentオブジェクトが取得できます。

(フレームオブジェクト自体は、~Frames.Item("Frame2"))


HtmlDocumentの中にすべての要素が含まれているので、

下記のようにするとBodyタグ内の情報をテキストで取得できます。

WebBrowser1.Document.Window.Frames.Item("Frame2").Document.Body.OuterHtml

その他の回答(1件)

id:KirakiraHikaru No.1

KirakiraHikaru回答回数354ベストアンサー獲得回数682006/08/01 22:36:24ここでベストアンサー

ポイント100pt

DocumentText自体はないのですが、下記のようにしてそのフレームのHtmlDocumentオブジェクトを取得できます。

WebBrowser1.Document.Window.Frames.Item("Frame2").Document

上記のItem("Frame2")の部分に名前を指定すると、そのFrameが取得できます。

また、Item(0).Documentという風に番号指定にすると1番目のFrameのHtmlDocumentオブジェクトが取得できます。

(フレームオブジェクト自体は、~Frames.Item("Frame2"))


HtmlDocumentの中にすべての要素が含まれているので、

下記のようにするとBodyタグ内の情報をテキストで取得できます。

WebBrowser1.Document.Window.Frames.Item("Frame2").Document.Body.OuterHtml
id:KirakiraHikaru No.2

KirakiraHikaru回答回数354ベストアンサー獲得回数682006/08/03 00:42:46

ポイント100pt

DocumentText自体はWebBrowser自身にしかないプロパティなので、

どうしてもDocumentTextとして取得したい場合は、

下記のように新しいWebBrowserを一時的に生成し、

それに取得したいフレームのHTMLファイルを読み込ませれば、

該当フレームをDocumentTextとして取得できます。

Dim testWebBrowser As New WebBrowser
testWebBrowser.Navigate(WebBrowser1.Document.Window.Frames.Item("Frame2").Url)
MsgBox(testWebBrowser.DocumentText)
testWebBrowser = Nothing

ただ、先の回答のとおり、HtmlDocumentオブジェクトにはすべての情報が含まれています。

どのような情報が格納されているかは、

HTMLをWebBrowserが読み込んだあとにブレークポイントを張っておいて実行し、

ブレークポイントで停止したときにWebBrowserオブジェクトをウォッチウィンドウで見るとわかります。

1.HTMLをWebBrowserが読み込んだときに呼び出される関数(作成していない場合は作成)

の適当なところにブレークポイントを張る

(MsgBoxのところで右クリックし、「ブレークポイント」->「ブレークポイントの挿入」)

Private Sub WebBrowser1_DocumentCompleted(ByVal sender As Object, _
ByVal e As System.Windows.Forms.WebBrowserDocumentCompletedEventArgs)  _
Handles WebBrowser1.DocumentCompleted

  ・・・・・
  MsgBox(WebBrowser1.Document.Window.Frames.Item("Frame2").Document.Title)
End Sub

2.実行する。WebBrowserでHTMLを読み込ませる。

3.HTMLをWebBrowserが読み込んだときに呼び出される関数で止まったら、

 WebBrowser1.Document.Window.Frames.Item("Frame2").Documentをドラッグして選択した状態にして、

 その上で右クリックし、「クイックウォッチ」を選択

すると、クイックウォッチウィンドウにオブジェクトの中身が表示されます。

下記に詳しく載っています。

http://homepage1.nifty.com/rucio/main/dotnet/shokyu/standard...

id:crashtruck

うっかりして返信を忘れてしまいました、大変失礼しました。周辺事項まで教えてくださってありがとうございます。すばらしいです。またぜひよろしくお願い申し上げます。

2006/08/04 21:16:09

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません