フレームおよび IFrame 内の HTML 要素へのアクセス
Web ページには、標準の DOM トラバーサルではアクセスできない要素を含むフレームまたは iframe が組み込まれていることがよくあります。 この記事では、そのような入れ子構造からのデータ、特にビデオ リンクの抽出について説明します。 メインドキュメントで GetElementsByTagName("video")
を直接使用すると、失敗することがよくあります。 フレームと iframe のアーキテクチャを理解することが重要です。
フレームと IFrame: 別のドキュメント
Frame と iframe は、親ドキュメント内に埋め込まれた独立した HTML ドキュメントです。それぞれが独自の HTML コンテンツと機能を持っているため、個別の処理が必要になります。 各フレームの HTML ドキュメント オブジェクトには、HtmlWindow.Document
プロパティを介してアクセスします。
埋め込みドキュメントへのアクセスと解析
WebBrowser
コントロールは、Document.Window.Frames
プロパティを介してフレームへのアクセスを提供します。 このコレクション内の各要素は、独立した解析が必要な個別の埋め込みドキュメントを表します。
var documentFrames = browser.Document.Window.Frames; foreach (HtmlWindow frame in documentFrames) { var videoElement = frame.Document.Body .GetElementsByTagName("VIDEO").OfType<HtmlElement>().FirstOrDefault(); }
例外処理: 堅牢な解析
フレームと iframe を解析すると、アクセスが制限されていることを示す UnauthorizedAccessException
や InvalidOperationException
のような例外がスローされることがよくあります。 プロセスの中断を防ぐために、次の例外をキャッチして適切に処理する必要があります。
try { // Parse frame or iframe document } catch (UnauthorizedAccessException) { } // Ignore: Access denied catch (InvalidOperationException) { } // Ignore: Invalid operation
概要
フレームと iframe の独立した性質を理解し、各埋め込みドキュメントを個別に解析することで、フレームや iframe 内にネストされている要素や属性も含め、Web ページのすべてのセクションから要素と属性を効果的に取得できます。これにより、包括的な Web スクレイピングと自動化が容易になります。
以上がFrame および IFrame から HTML 要素の値を取得する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。