存取框架和 IFrame 中的 HTML 元素
網頁經常包含框架或 iframe,其中包含無法透過標準 DOM 遍歷存取的元素。 本文討論從此類嵌套結構中提取數據,特別是視訊連結。 在主文檔上直接使用 GetElementsByTagName("video")
通常會失敗。 了解框架和 iframe 架構是關鍵。
框架和 IFrame:單獨的文檔
框架和 iframe 是嵌入在父文檔中的獨立 HTML 文件。每個都有自己的 HTML 內容和功能,需要單獨處理。 每個框架的 HTML 文件物件可透過 HtmlWindow.Document
屬性存取。
存取與解析嵌入文件
WebBrowser
控制項透過 Document.Window.Frames
屬性提供對框架的存取。 此集合中的每個元素代表一個需要獨立解析的單獨嵌入文件。
<code class="language-csharp">var documentFrames = browser.Document.Window.Frames; foreach (HtmlWindow frame in documentFrames) { var videoElement = frame.Document.Body .GetElementsByTagName("VIDEO").OfType<HtmlElement>().FirstOrDefault(); }</code>
異常處理:穩健的解析
解析框架和 iframe 常會拋出 UnauthorizedAccessException
或 InvalidOperationException
等異常,表示存取受限。 為了防止進程中斷,應該捕獲並妥善處理這些異常:
<code class="language-csharp">try { // Parse frame or iframe document } catch (UnauthorizedAccessException) { } // Ignore: Access denied catch (InvalidOperationException) { } // Ignore: Invalid operation</code>
總結
透過了解框架和 iframe 的獨立性質並單獨解析每個嵌入文檔,您可以有效地從網頁的所有部分檢索元素和屬性,包括嵌套在框架或 iframe 中的元素和屬性。這有助於全面的網頁抓取和自動化。
以上是如何從框架和 IFrame 檢索 HTML 元素值?的詳細內容。更多資訊請關注PHP中文網其他相關文章!