麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 學院 > 開發(fā)設計 > 正文

具有自動查找Web頁面上所有鏈接的網(wǎng)絡瀏覽器

2019-11-18 18:39:31
字體:
來源:轉載
供稿:網(wǎng)友
 

具有自動查找Web頁面上所有鏈接的網(wǎng)絡瀏覽器

1. 概述
WEB的應用已經(jīng)深入到現(xiàn)在社會的方方面面,作為一個軟件開發(fā)人員或其他技術人員,都有可能遇見在Internet上查詢大量的資料和信息的情況,一般來說用的最多的就是WEB的搜索Engine。當我們使用它查出大量的資料鏈接后,還有可能遇到更多的鏈接,但要自己去看他們是否是鏈接,那確實是一件很麻煩的事情。這篇文章就是來講,如何用Delphi的MSHTML_TLB.pas來開發(fā)一個具有自動查找Web頁面上所有鏈接的簡單網(wǎng)絡瀏覽器。我是在IE5的環(huán)境下寫的這個程序,當然它可以向下兼容,如IE4。
2.關于MSHTML_TLB.pas
MSHTML_TLB.pas是Deliphi里面自帶的一個類。它的含義是Microsoft HTML對象庫。它不能夠包含在所有的工程或程序中,原因是它實在是太大了,整個文件的代碼共有241,899l行,那么長。大小約有12M。下面我們來看看它是如何加入到程序中的。
1. 首先,我們打開Delphi,建立一個新的application。我把form1保存為MainFrm.pas,把application保存為FindLinks.dPR.
2. 要想實現(xiàn)IE 的功能我們就必須要使用Microsoft HTML對象庫(MSHTML type library.)如何實現(xiàn)呢?如圖1, Project->Import Type Library:

然后你會看到關于"Microsoft HTML Object Library (Version 4.0)"的列表,如圖2。
接下來可能會遇到一些問題。比如,在列表里面沒有出現(xiàn)"Microsoft HTML Object Library (Version 4.0)"。這是為什么呢?那是IE的問題,由于IE版本的不同(我用的是IE5)。我建議最好是先查詢你的計算機里面有沒有mshtml.tlb這個文件。
在9x里面它是存在與C:/WINDOWS/SYSTEM目錄里面,在2000里面它在/WINNT/system32目錄里面。如果找到了這個文件,就可以用圖2的click on the "Add..." button,然后選擇mshtml.tlb,就可以了,如果沒有找到它,那說明你沒有安裝IE或你的IE版本太低,請升級IE。
最后,當我們選擇了倒入的庫后,會等待一段時間,因為它實在是太長了,不過請千萬不要因為是死機了。它會給自動查找提供很多幫助。
3. 工程實現(xiàn)。
界面設計如下圖:


使用以下組件
控件 命名 TEXT
TLabel lblURL 資料網(wǎng)址
TEdit edtURL http://www.huihu.com
TButton btnFindLinks 查詢連接
TListBox lstbxLinks null

4. 程序設計
1. 在Form1的interface部分,在uses后面加入,OleCtrls, SHDocVw, and OleServer.這些所應用的類,都是基于我們所要創(chuàng)建的TinternetExplorer的,它是IE的ActiveX的對象。但是這里還有其它的方式(TinternetExplorer)進行,我們采用TwebBrowser 控制在我們的form1。
2. 我們在private里面加入如下代碼:
FInternetExplorer: TInternetExplorer;
procedure WebBrowserDocumentComplete(Sender: TObject; var pDisp: OleVariant;
var URL: OleVariant);     
最后用Ctrl-Shift-C完成類的聲明。
3. 在impelmentation后面加入如下聲明:
uses MSHTML_TLB, ComObj;
要使用的類。
4. 在form1的OnCreate事件中加入如下:
     FInternetExplorer := TInternetExplorer.Create(Self);
  FInternetExplorer.OnDocumentComplete := WebBrowserDocumentComplete;
5. 最后在form1的TForm1.WebBrowserDocumentComplete里面加入如下代碼:
1. procedure TForm1.WebBrowserDocumentComplete(Sender: TObject;
2.     var pDisp: OleVariant; var URL: OleVariant);
3. var
4.   Doc: IHTMLDocument2;
5.   ElementCollection: IHTMLElementCollection;
6.   HtmlElement: IHTMLElement;
7.   I: Integer;
8.   AnchorString: string;
9. begin
10.   lstbxLinks.Clear;
11.   // 在處理網(wǎng)頁的時候發(fā)現(xiàn)它沒有完全下載,將不會進行處理連接
12.    Doc := FInternetExplorer.Document as IHTMLDocument2;
13.   if Doc = nil then
14.     raise Exception.Create('Couldn''t convert the ' +
15.       'FInternetExplorer.Document to an IHTMLDocument2');
16.   // 奪取web上的所有元素。
17.   ElementCollection := Doc.all;
18.   for I := 0 to ElementCollection.length - 1 do
19.   begin
20.     file://得到當前的元素
21.     HtmlElement := ElementCollection.item(I, '') as IHTMLElement;
22.     // 查找網(wǎng)頁原代碼中的LINK標記。
23.     // 發(fā)現(xiàn)其它的html標記 (例如: TABLE, FONT, etc.)
24.     if HTMLElement.tagName = 'A' then
25.     begin
26.       // 在詳細的link里面抓取innerText,innertext就是標記中<href=后面的東西>例如:

27.       // 我們在web里面看見"西南民族學院"
28.       // <a ><b>西南民族學院</b></a>.
29.           AnchorString := HtmlElement.innerText;
30.       if AnchorString = '' then
31.         AnchorString := '(Empty Name)';
32.       AnchorString := AnchorString + ' -  ' +
33.         (HtmlElement as IHTMLAnchorElement).href;
34.       lstbxLinks.Items.Add(AnchorString);
35.     end;
36.   end;
37. end;

   最后我們在button(btnFindLinks)加入Onclick 事件:
1. // 在被瀏覽的web里面進行查詢連接。
2.   FInternetExplorer.Navigate(edtURL.Text, EmptyParam, EmptyParam,
    EmptyParam, EmptyParam);
從以上的程序里面我們可以看出它的原理了,實際上是很簡單的,看過html原代碼的人都知道,使網(wǎng)頁產生連接的代碼就是:<a 號后面截止。
然后把它保存為另外的字符串。然后通過TwebBrowser顯示出來。
最后讓我們來編譯這個程序,的卻,編譯它很費時間,因為編譯多達241,899l行的MSHTML_TLB.pas,是一件很麻煩的事情。其中還包括多達20多個的warning錯誤,但請放心這是MSHTML_TLB.pas的問題,與其它程序無關。這樣一個小型的查找Web頁面上所有鏈接的簡單網(wǎng)絡瀏覽器就出現(xiàn)在我們面前。本程序在IE5.0和Delphi6下編譯通過。


上一篇:如何利用ADO操縱Excel文件

下一篇:向word文檔中輸出表格及圖形

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
學習交流
熱門圖片

新聞熱點

疑難解答

圖片精選

網(wǎng)友關注

主站蜘蛛池模板: 久久国产成人精品国产成人亚洲 | 男男啪羞羞视频网站 | av免费提供 | 激情综合网俺也去 | 久国久产久精永久网页 | 成人一区二区三区在线 | 99r国产精品 | 特级西西444www大精品视频免费看 | 国产成人免费高清激情视频 | 性欧美一区二区 | 久久视频精品 | 国产精品久久久久久久久久iiiii | 色综合久久久久综合99 | 亚洲精品av在线 | 欧美韩国日本在线 | 国产91一区二区三区 | 亚洲午夜久久久久 | 黄色影院网站 | 92看片淫黄大片欧美看国产片 | 亚洲国产精品一区二区久久 | 欧美性成人 | 精品国产一区二区在线 | 中文字幕免费一区 | 日产精品一区二区三区在线观看 | 久久在线免费视频 | 操嫩草| 国产精品91在线 | 久久久久久久午夜 | 一级性色 | 爱爱视频天天干 | 亚洲精品欧美二区三区中文字幕 | 久久丝袜脚交足黄网站免费 | 精品一区久久久 | 美女黄影院 | 国产一区二区精品在线观看 | 色诱亚洲精品久久久久久 | 国产一级桃视频播放 | 国产精品久久久久久久久久大牛 | 久久777国产线看观看精品 | 国产亚洲精品美女久久久 | 99精品国产一区二区三区 |