利用webBrowser获取框架内Html页面内容
利用webBrowser获取页面比较简单,MSDN下有示例,在这里不必多说。
可是一些 HTML 文档由“框架”构成,或可以存放它们自己独特 HTML 文档的窗口。使用框架可以轻松地创建 HTML 页面,其中一页或多页在其他框架持续更改它们内容的同时保持静态,例如导航栏。
HTML 作者可以采用以下两种方法之一创建框架:
使用 FRAMESET 和 FRAME 标记,创建固定窗口。
- 或 -
使用 IFRAME 标记,创建可以在运行时重新放置的浮动窗口。
因为框架包含 HTML 文档,它们在文档对象模型 (DOM) 中表示为窗口元素和框架元素。
当通过使用 HtmlWindow 的框架集合访问 FRAME 或 IFRAME 标记时,也就是检索对应于此框架的窗口元素。这里指框架的所有动态属性,例如它的当前 URL、文档和大小。
使用 HtmlWindow、Children 集合或 GetElementsByName 或 GetElementById 等方法的 WindowFrameElement 属性访问 FRAME 或 IFRAME 标记时,也就是在检索框架元素。这里指框架的静态属性,包括原始 HTML 文件中指定的 URL。
框架和安全
对框架的访问因为托管 HTML DOM 实施称为“跨框架脚本撰写安全”的安全措施的事实而比较复杂。如果文档包含的 FRAMESET 中的两个或多个 FRAME 在不同域中,这些 FRAME 互相之间不能交互。换言之,显示网站内容的 FRAME 无法访问承载第三方站点(例如 http://www.adatum.com/)的 FRAME 中的信息。在 HtmlWindow 类级别实现这种安全。可以获取关于承载另一个网站的 FRAME 的一般信息(例如它的 URL),但无法访问它的 Document 或更改它的宿主 FRAME 或 IFRAME 的大小或位置。
此规则也适用于使用 Open 和 OpenNew 方法打开的窗口。如果您打开的窗口所在域不同于在 WebBrowser 控件中承载的页面的域,您将无法移动该窗口或检查它的内容。当您使用 WebBrowser 控件显示一个与部署基于 Windows 窗体的应用程序所用网站不同的网站时,也将强制执行这些限制。如果使用 ClickOnce 部署技术从网站 A 安装应用程序,而使用 WebBrowser 显示网站 B,您将无法访问网站 B 的数据。
有关跨站点脚本撰写的更多信息,请参见 About Cross-Frame Scripting and Security(关于跨框架脚本撰写和安全) (http://msdn.microsoft.com/library/default.asp?url=/workshop/author/om/xframe_scripting_security.asp)。
请参见
1.获取frame的源文件
MessageBox.Show(webBrowser1.Document.Window.Frames["main"].Document.Body.InnerHtml);
2.获取frame的HTMLDocument接口
HTMLDocument doc = (HTMLDocument)webBrowser1.Document.DomDocument;
object j;
for (int i = 0; i < doc.parentWindow.frames.length; i++)
{
j = i;
HTMLWindow2Class frame = doc.parentWindow.frames.item(ref j) as HTMLWindow2Class;
if (frame.name == "main")
{
MessageBox.Show(frame.document.title);
}
}
3.获取frame的IHTMLDocument2接口
IHTMLDocument2 doc = (IHTMLDocument2)webBrowser1.Document.Window.Frames["main"].Document.DomDocument;
4.取得frame中被点击的连接
private void webBrowser1_Navigating(object sender, WebBrowserNavigatingEventArgs e)
{
string url = webBrowser1.Document.Window.Frames["main"].Document.ActiveElement.GetAttribute("src");
}
利用webBrowser获取框架内Html页面内容的更多相关文章
- Python3.x:selenium获取iframe内嵌页面的源码
Python3.x:selenium获取iframe内嵌页面的源码 前言 在一些网页中经常会看到ifrmae/frame标签,iframe是嵌入式框架一般用来在已有的页面中嵌入另一个页面,当一个元素在 ...
- bash 获取时间段内的日志内容
需求,获取时段内的/var/log/messages文件内出现错误的消息,支持多行的消息,支持天,小时分钟,秒级的区间,可以修改监控的日志对象 #!/bin/bash if [ $# != 1 ] ; ...
- 利用webBrowser获取页面iframe中的内容
1.获取frame的document HtmlDocument htmlDoc = webBrowser1.Document; htmlDoc = webBrowser1.Document.Wind ...
- 如何利用JQuery获取iframe内联框架对象?
parent.$("#iframeID").get(0).contentWindow; 父.$("选择器").get(0).contentWindow; get ...
- 利用chrome插件批量读取浏览器页面内容并写入数据库
试想一下,如果每天要收集100页网页数据甚至更多.如果采用人工收集会吐血,用程序去收集也就成为一个不二的选择.首先肯定会想到说用java.php.C#等高级语言,但这偏偏又有个登陆和验证码,搞到无所适 ...
- Python 网络爬虫与信息获取(二)—— 页面内容提取
1. 获取超链接 python获取指定网页上所有超链接的方法 links = re.findall(b'"((http|ftp)s?://.*?)"', html) links = ...
- html利用j获取局域网内的本机IP(根据客户端浏览器的ip获取)
根据客户端浏览器的ip获取 <!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type ...
- java利用反射获取对象前后修改的内容(用于日志记录)
import java.beans.PropertyDescriptor; import java.lang.reflect.Field; import java.lang.reflect.Metho ...
- C#利用WebBrowser获取完整COOKIE
代码: http://www.cnblogs.com/hsapphire/archive/2010/09/10/1823384.html http://blog.csdn.net/attilax/ar ...
随机推荐
- 读书时间《JavaScript高级程序设计》四:BOM,客户端检测
隔了一段时间,现在开始看第8章. 第8章:BOM BOM提供了很多对象,用于访问浏览器的功能.BOM的核心对象是window,它表示浏览器的一个实例. window对象是通过javascript访问浏 ...
- Bulk Insert具体订单
Bulk Insert具体订单 BULK INSERT与用户指定的格式的数据文件复制到数据库表或视图. 语法: BULK INSERT [ [ 'database_name'.][ 'owner' ] ...
- 文章13称号 Add Two Numbers
You are given two linked lists representing two non-negative numbers. The digits are stored in rever ...
- 11gRAC CHM 管理
Cluster Health Monitor(缩写CHM)是Oracle提供的工具,自己主动的资源来收集操作系统(CPU.内存.SWAP.过程.I/O与网络)用法. CHM数据被收集每秒一次,11.2 ...
- 系列三VisualSvn Server
原文:系列三VisualSvn Server VisualSvn Server介绍 1 .VisualSvn Server VisualSvn Server是免费的,而VisualSvn是收费的.V ...
- Machine Learning—Linear Regression
Evernote的同步分享:Machine Learning-Linear Regression 版权声明:本文博客原创文章.博客,未经同意,不得转载.
- JEECG移动解决方案 -
针对移动应用的应用系统转换的中间件解决方案
设想: 通过中间件配置,在业务系统中使用到移动应用程序的简单版本.(移动页面生成器) 实现方法: 当前移动应用解决方式非常多:app?html5?微信 採用何种方法来实现?对于一个企业来讲,app分 ...
- html 块状元素 行内元素 内联元素
块状(Block)类型的元素的width默认为100%,而行内(Inline)类型的元素则是根据自身的内容及子元素来决定宽度. 块元素(block element) address - 地址 bloc ...
- iOS一个开发系列中 - UIButton 使用摘要
// 初始化button并设置类型 UIButton *btn = [UIButton buttonWithType:UIButtonTypeRoundedRect]; // 可以定义的UIButto ...
- JavaScript语言基础知识7
JavaScript该阵列是一个新概念. 我们可以使用newkeyword和Array()构造函数来解释 排列: <HTML> <HEAD> <TITLE>Hell ...