摘要:本文说明了如何利用microsoft web browser(web浏览器)控件和microsoft document object model (dom)(文档对象模型),用编程的方式来访问web中的每一个元素。
要访问web页面的元素,首先必须引用web browser控件,以便应用其属性、对象、方法和事件。通过调用navigate方法,就可以用web browser来打开页面。但要用程序进行访问,必须等到文档全部下载完了之后才能够进行,即文档的complete事件发生;然后把web browser对象的document属性转换成ihtmldocument2接口对象,这样就可以访问该对象的集合了,比如:link集合,image集合等,这些集合将返回ihtmlelementcollection对象。本文以link集合做例子来进行阐述,返回你指定url页面的全部的链接。
下面就是实现这一功能的简单过程:
1,打开microsoft visual studio .net,新建一个visual c# windows application(windows应用程序),默认名称为form1。
2,在solution explorer(解决方案浏览器)中,用右键点击references(引用)文件夹,然后选择 add reference(添加引用)的选择项,这时会打开add reference(添加引用)对话框。
3,点击.net标签页,双击microsoft.mshtml组件,然后点击ok(确定)按钮。
4,打开toolbox(工具箱),在任何一个工具项上点击右键,选择customize toolbox(自定义工具条),此时,自定义工具条对话框就打开了。
5,点击com components(com 组件)标签页,使microsoft web browser前的复选框选中。点ok(确定)按钮。此时,名为explorer的web browser控件就添加到了工具箱内。
6,选择explorer控件,把它添加到form1窗体内,名称为默认的axwebbrowser1。
7,在browser控件的上面添加textbox,在browser控件的下面添加listbox,名称分别为默认的textbox1和listbox1,textbox1的text属性设置为:http://lucky_elove.www1.dotnetplayground.com/;在textbox后面添加button,text改为“浏览页面”,名称为button1。此时,页面将入下图所示:

8,双击button1,在button1_click的事件里输入如下的代码:
private void button1_click(object sender, system.eventargs e)
{
object zero = 0;
object emptystring = "";
axwebbrowser1.navigate(textbox1.text,ref zero, ref emptystring, ref emptystring, ref emptystring);
}
9,切换窗体到设计模式,选择browser控件,点击属性窗口上的“event(事件)”图标,此时web browser事件对话框打开,双击document complete事件,在axwebbrowser1_documentcomplete的事件处理过程里输入如下的代码:
private void axwebbrowser1_documentcomplete(object sender,
axshdocvw.dwebbrowserevents2_documentcompleteevent e)
{
ihtmldocument2 htmldocument =(ihtmldocument2) axwebbrowser1.document;
ihtmlelementcollection links = htmldocument.links;
listbox1.items.clear();
foreach (htmlanchorelementclass el in links)
{
listbox1.items.add(el.outerhtml);
}
}
10,在form1.cs文件的顶部输入:
using mshtml;11,按f5,运行表单,点击“浏览页面”按钮,将会看到如下的结果,是不是很爽:)
