WebBrowser组件和MSHTML 在Delphi中的使用---转自 http://www.hackpig.cn/post/294.html

转载 2012年02月01日 01:23:45

======================================================
注:本文源代码点此下载
======================================================

mshtml是微软公司的一个com组件,该组件封装了html语言中的所有元素及其属性,通过其提供的标准接口,可以访问指定网页的所有元素.

mshtml对象模型是由一些对象和集合组成的.处于根部的是html,描述了打开页面的1个窗口,包括一系列集合和对象。如frames集合,history,location,navigator,document,vi—sum,event对象等.其中描述呈现在客户窗口实际网页的是document对象。由一系列的属性、方法、对象和集合组成.其中all集合中包含网页中所有标记(tag)元素,其主要的方法和属性有:

(1)length(长度):即标记出现的个数,可以把标记的集合理解为从0开始的一维数组,其次序按照标记在网页位置排列;

(2)tags(标记):用于过滤出给定标记的集合,如doc.al1.tags(p)得到所有分段标记p;

(3)item(项目):用于选择集合中的某1个元素,如object.item(0)得到集合的第1个元素,而object.item(i)得到第i+1个元素.

此外,ihtmlelement也是个常用的集合对象,代表网页中指定标记的集合,通过这个集合对象,可以得到网页上特定标记的内容.ihtmlelement有4个主要属性:

(1)innertext:开始标记和结束标记之间的文本;

(2)innerhtml:开始标记和结束标记之间的文本和html;

(3)outertext:对象的文本;

(4)outerhtml:对象的文本和html.

注意:使用前加入单元mshtml

演示表单提交

procedure tform1.button1click(sender: tobject);

var

doc:ihtmldocument2;

input:olevariant;

userinputelement,pwdinputelement:ihtmlinputelement;

begin

doc:=webbrowser1.document as ihtmldocument2;

userinputelement:=(doc.all.item('user'(也就是网页中用户名控件的名字),0) as ihtmlinputelement);

userinputelement.value:=edit1.text;(也就是你要向网页输入的东西)

pwdinputelement:=(doc.all.item('password',0) as ihtmlinputelement);

pwdinputelement.value:=edit2.text;

input:=doc.all.item('submit',0);

input.click;

end;

当提交数据按钮没有name属性时,采用如下方法:

procedure tform1.button1click(sender: tobject);

var

doc:ihtmldocument2;

form:ithmlformelement;

userinputelement,pwdinputelement:ihtmlinputelement;

begin

doc:=webbrowser1.document as ihtmldocument2;

userinputelement:=(doc.all.item('user'(也就是网页中用户名控件的名字),0) as ihtmlinputelement);

userinputelement.value:=edit1.text;(也就是你要向网页输入的东西)

pwdinputelement:=(doc.all.item('password',0) as ihtmlinputelement);

pwdinputelement:=edit2.text;

form:=(doc.all.item('login_form',0) as ihtmlformelement):

form.submit;

end;

登录"按钮一般都是网页中默认的回车按钮,所以可以用上面代码来代替前面的点击按钮

读取某网页内容

在创建窗体的时候打开一网页

webbrowser1.navigate('http://www.baidu.com')

procedure tform1.button1click(sender: tobject);

begin

memo1.lines.add(ihtmldocument2(webbrowser1.document).body.outerhtml);

end;

这样一来memo1中显示www.baidu.com的html

利用webbrowser1控件浏览某txt中文件的内容,并以html形式来显示出来

在webbrowser1的控件中的ondocumentcomplete事件加入如下代码

procedure tform1.webbrowser1documentcomplete(sender: tobject;

const pdisp: idispatch; var url: olevariant);

var

webdoc:htmldocument ;

webbody:htmlbody;

begin

webdoc:=webbrowser1.document as htmldocument;

webbody:=webdoc.body as htmlbody;

webbody.insertadjacenthtml('beforeend','');

webbody.insertadjacenthtml('beforeend','password: ');

webbody.insertadjacenthtml('beforeend','');

webbody.insertadjacenthtml('beforeend','');

webbody.insertadjacenthtml('beforeend',' ');

webbody.insertadjacenthtml('beforeend','');

end;

读取的时候,webbrowser控件得要完整的打开某一网页,程序代码如下


======================================================
在最后,我邀请大家参加新浪APP,就是新浪免费送大家的一个空间,支持PHP+MySql,免费二级域名,免费域名绑定 这个是我邀请的地址,您通过这个链接注册即为我的好友,并获赠云豆500个,价值5元哦!短网址是http://t.cn/SXOiLh我创建的小站每天访客已经达到2000+了,每天挂广告赚50+元哦,呵呵,饭钱不愁了,\(^o^)/

WebBrowser组件和MSHTML 在Delphi中的使用

WebBrowser组件和MSHTML 在Delphi中的使用  作者:yahoo123  由于项目需要,近来研究了一下WebBrowser组件和MSHTML 在Delphi中的使用,整理了一下这段时...
  • Tunix126
  • Tunix126
  • 2007年07月18日 22:04
  • 1281

Delphi 通过MSHTML实现一个HTML解析类

最近经常会模拟网页提交返回网页源码,然后获得网页中相应的元素,于是需要常常解析Html中相应的各种元素,网络是个好东西,搜索一番,就找到了好几个Delphi版本的HtmlParser的类库,试着使用了...
  • suiyunonghen
  • suiyunonghen
  • 2010年01月05日 09:14
  • 2724

Delphi : WebBrowser、MSHTML在Delphi中的使用

>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>   WebBrowser、MSHTML在Delphi中的使用 1.初始化和终止化 uses ActiveX...
  • u010569495
  • u010569495
  • 2014年09月07日 01:19
  • 333

使用MSHTML解析HTML代码

从国外站点转过来的:C++版本:I have a lot ofexperience in programming low-level MSHTML and I always see questions...
  • suiyunonghen
  • suiyunonghen
  • 2009年12月06日 21:53
  • 6471

delphi 中 使用 TIdHTTP 提交Post数据

var fhttpRequest: TIdHTTP; PostData : TStringStream; tmpStr : String; begin fhttpRequest := TIdHT...
  • webouse
  • webouse
  • 2017年04月07日 09:52
  • 2889

Delphi xe5 控件TIdhttp的用法post,get解决中文乱码问题

网络接口如下图: 浏览器演示如下:http://112.64.158.30:7777/web/login!doLogin?data={"password":"yangtao123","userCo...
  • Syndicator
  • Syndicator
  • 2013年12月13日 15:47
  • 8206

用Delphi的TIdHttp控件发起POST请求和Java的Servlet响应

使用Delphi的TIdHttp控件发起一个POST请求很简单,定义一个TStringList实例,往上面添加参数就行: procedure TForm1.Button1Click(Sender: T...
  • panjunbiao
  • panjunbiao
  • 2013年02月26日 23:42
  • 6803

http协议中get和post的区别(转)

HTTP请求格式 GET 和 POST的区别 [] 在HTTP请求中,第一行必须是一个请求行(request line),用来说明请求类型、要访问的资源以及使用的HTTP版本。紧接着...
  • hu_jiangan
  • hu_jiangan
  • 2015年10月15日 14:04
  • 1139

[delphi]indy idhttp post方法

idhttp中对于post方法的定义: function Post(AURL: string; ASource: TIdStrings): string; overload; fun...
  • none01
  • none01
  • 2013年03月11日 16:23
  • 11741

使用MSHTML解析HTML页面

最近在写一个爬虫项目,本来打算用C/C++来实现,在网上查找有关资料的时候发现了微软的这个MSHTML库,最后发现在解析动态页面的时候它的表现实在是太差:在项目中需要像浏览器那样,执行JavaScri...
  • lanuage
  • lanuage
  • 2017年06月01日 02:20
  • 2841
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:WebBrowser组件和MSHTML 在Delphi中的使用---转自 http://www.hackpig.cn/post/294.html
举报原因:
原因补充:

(最多只允许输入30个字)