摘要:本文說明了如何利用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)<br /> {<br /> object Zero = 0;<br /> object EmptyString = "";<br /> axWebBrowser1.Navigate(textBox1.Text,ref Zero, ref EmptyString, ref EmptyString, ref EmptyString);<br /> }<br />
9,切換表單到設計模式,選擇Browser控制項,點擊屬性視窗上的“Event(事件)”表徵圖,此時Web Browser事件對話方塊開啟,雙擊Document Complete事件,在axWebBrowser1_DocumentComplete的事件處理過程裡輸入如下的代碼:
<br /> private void axWebBrowser1_DocumentComplete(object sender,<br /> AxSHDocVw.DWebBrowserEvents2_DocumentCompleteEvent e)<br /> {<br /> IHTMLDocument2 HTMLDocument =(IHTMLDocument2) axWebBrowser1.Document;<br /> IHTMLElementCollection links = HTMLDocument.links;</p><p> listBox1.Items.Clear();</p><p> foreach (HTMLAnchorElementClass el in links)<br /> {<br /> listBox1.Items.Add(el.outerHTML);<br /> }<br /> }<br />
10,在Form1.cs檔案的頂部輸入:
using mshtml;
11,按F5,運行表單,點擊“瀏覽頁面”按鈕,將會看到如下的結果,是不是很爽:)
src:http://blog.csdn.net/derny/archive/2004/08/30/89276.aspx