访问框架和 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中文网其他相关文章!