亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 開發設計 > 正文

制作自己的網絡搜索軟件

2019-11-18 17:27:59
字體:
來源:轉載
供稿:網友
大家都知道,獲得信息是我們上網的很大一個目的,而獲得信息對于大多數人來說要通過網上的搜索引擎來搜索自己所需要的信息,而搜索軟件通過向搜索站點發出特殊搜索字串命令(各個站點的格式不一樣),然后用軟件對結果進行處理后顯示出來。原理簡單,可是效果卻是顯著的,能夠迅速而方便的搜索到各個站點的信息。下面我就通過介紹使用vb制作自己的搜索軟件和剖析現在流行的搜索軟件程序來介紹這些內容:
  我們都知道vb是最簡單方便的編程語言,利用vb編寫一個小小的搜索軟件用不了多少行語句。第一步當然要安裝一個vb5.0或者6.0的運行環境。啟動vb以后,首先創建了一個窗體,然后要對運行環境進行一下設置:具體來說呢,就是添加上必要的控件,一般來說,如果您安裝了IE4.0以上的瀏覽器,windows的system目錄中就會有SHDOCVW.DLL的文件,我們通過點擊菜單中“工程”-“部件”,在彈出的對話框中找到有一欄寫著”microsoftinternetcontrols”的選項,這個選項其實就是上面提到的SHDOCVW.DLL文件的描述。利用這個文件我們可以初始化一個瀏覽器的實例。當您選中這個選項后,會發現工具欄中多了一個形狀如同地球的按鈕,這就是剛才選中的瀏覽器控件,我們雙擊這個圖標按鈕在窗體上生成一個webbrowser1的部件,接下來我們就使用這個部件來顯示查詢的結果。

  接下來我們在窗體上放上一個文本框和一個按鈕,其實就這幾個部件已經可以算是一個最小的搜索程序基本結構了。我們現在來所一說網絡搜索的原理:上面已經提到是通過向搜索站點發出特殊搜索字串命令(各個站點的格式不一樣),然后用軟件對結果進行處理后顯示出來,但如何發出搜索字符串、發出怎樣的字符串還需要有一定的HTML知識。我們知道對于網上信息的的發送是通過表單的形式來發送的,也就是說當我們在網上點擊某些表單時,通過表單中包含的默認地址中的表單處理程序來接受所有包含在表單中的信息,而這些信息有的是顯示的,而另外一些卻是隱藏的。您可以試著將一個包含有表單的網頁用Frontpage或者Dreamwaver打開,這時你就會發現有很多用瀏覽器看不到的東西,這些隱藏的標志同樣在您發送表單時起著重要的作用。沒有這些標志,發出的字符串很可能得不到服務器的應答。我們知道了這些,再返回頭來看我們程序所需發出的字符串,舉個例子來說:最常用的雅虎中文的搜索代碼是”http://cn.search.yahoo.com/search/gb?p=***”,其中***代表的是所要搜索的字符串,而剩余的部分是處理字符串的服務器程序的地址,另外一個我們很常用的搜索引擎Yeah,它的搜索代碼相對復雜了一些是”http://www2.yeah.net/cgi-bin/query2.exe?query=***&start=0&REXP=AND”,但基本的東西沒有變,它們都是使用了這樣一種形式:http://目標URL?參數1名=參數1值&參數2名=參數2值&參數3名=參數3值…

  對于http協議,其中包括重要的幾種傳送數據的方法,其中比較常用的有GET和POST方法,對于使用GET方法進行傳送數據的網站來說,使用上面的形式百發百中,都能夠通過一條查詢語句返回所需要查詢的內容網頁,但對于使用POST方法的網站,有可能返回不了查詢結果網頁,不過從我的經驗看,一般來說是能夠成功的。

  知道了如何向服務器發送查詢語句,下面我們就從程序的角度來寫:假若窗體上有一個文本框Text1、一個標簽Label1、一個瀏覽器Webbrowser1、一個按鈕Command11,其中文本框用于輸入關鍵詞,瀏覽器用于顯示查詢結果網頁,按鈕用于發出請求語句,那么點擊Command1的程序語句可以這樣寫:


Webbrowser1.Navigateurl'調用瀏覽器顯示查詢結果

EndSub

  雅虎的查詢語句比較簡單,而對于比較復雜網站的查詢語句一定要注意的是各個關鍵參數之間一定要用“&”來隔開。雖然你只是學會了這一招,但已經足夠利用網上的資源來編寫你的第一個程序了,因為網上所有類型的表單都能表示了,無論是查詢股票、軟件、書籍、圖片,都不外乎這種模式。只要你將查詢網頁調入Frontpage、Dreamwaver等所見即所得的網頁編輯軟件中,便會毫無遮攔的展現在你的面前,利用這些鏈接,再加上一個好的界面,當然可以制作自己的搜索工具軟件了,不過要注意的是,有些表單的傳送路徑的是相對路徑,這時要加上網站的地址鏈接。
  可能有人要說,這么簡單,誰不知道,不是為了賺稿費吧?錯。剛才的方法比起直接訪問搜索站點的確能節省不少上網的時間,但并沒有將程序的優勢全部發揮出來,我們現在繼續講另外一種檢索網頁的方法:首先介紹一個控件MicrosoftInternetTransfer(這個控件在安裝vb或者某些程序的時候會自動安裝),這個控件允許建立與其他計算機的鏈接,并傳送文件。它使兩個Internet規則HTTP和FTP的使用變得容易。當正常訪問一個網頁時,InternentTransfer用GET命令訪問網絡瀏覽器的一個文件。例如,如果打開了URLhttp://www.cpcw.com/index.htm,瀏覽器將建立與地址在www.cpcw.com的機器的鏈接,并傳送命令GET/index.htm。HTML將通過鏈接以普通文本的方式返回,因為返回的內容只是所要的網頁的源文件,節省了很多用于傳送顯示網頁中圖像的時間,速度要快了許多,但最重要的是我們可以很方便地使用自己的邏輯對凡會的源文件進行正確地分析和格式化,重新整理網頁的查詢結果。

  我們還用剛才的窗體,只是要在菜單中選擇“工程“-”部件“,在彈出的對話框中找到一項是:MicrosoftInternetTransferControl,選中后,在工具欄中您就會發現增添了一個顯示有地球和計算機的小按鈕,雙擊這個按鈕會在窗體上加入一個InternetTransfer實例Inet1,完成了這些步驟后,窗體應如圖一所示?,F在準備在實例工程中加入代碼。

  InternetTransfer控件有一個事件StateChanged。這個事件的目的是當不同的操作發生時通知用戶程序。例如:控件在與網絡服務器鏈接時是一種狀態,檢索HTML是另一種狀態。當前的狀態用事件過程的State參數來表示。在示例程序的StateChanged事件中輸入如下代碼:

PrivateSubInet1_StateChanged(ByValStateAsInteger)

SelectCaseState

Case12'表明網絡連接檢索正常

stemp=Inet1.GetChunk(1024)'使用GetChunk方法從緩沖區中一次提取1024個字節的回應文本,并存放在stemp臨時變量中

Whilestemp<>””'當仍然返回信息時

LastResult=LastResult stemp'將整個網頁的源文件代碼放入LastResult變量中

stemp=Inet1.GetChunk(1024)'循環

Wend

Case11

MsgBox"未返回搜索結果"

EndSelect

EndSub

盡管StateChanged事件包含了這個示例程序代碼的主要部分,我們仍然需要在Command1的Click事件中加入代碼,以初始化這個請求。下面就是這段代碼:

`
PrivateSubCommand1_Click()

url="http://search.chinese.yahoo.com/search/gb?p=" Text1.Text

Inet1.protocol=icHTTP'指明控件協議類型

Inet1.ExecuteCStr(url),”GET/”'發出請求

WhileInet1.StillExecuting

DoEvents

Wend

EndSub

  前面已經提到,以這種方法返回的信息包含了搜索的結果網頁,同直接搜索的區別就是由于這樣返回的就是源代碼,暫時存儲到一個臨時變量中,這樣一來,你既可以將返回的信息直接存儲到一個文件中,另一種方法,這就是我們下面要提到的對代碼的優化處理。

  什么叫對代碼的優化處理呢?因為返回的結果中包含許多其他沒有什么用處的修飾,比如表格、banner、menta等等信息,而這些信息并不是我們需要的,去掉這些信息,只保留對我們來說有用的結果,這就是優化。那么怎樣優化呢?分析HTML語法您就會看到,許多信息都是包含在一些關鍵詞之間。舉個例子:對于插入的圖片來說,都是用”<imgsrc=”來開頭,用往后遇到的第一個”>”來結尾,這樣一來就清楚了,只要把代碼中所有的滿足以上條件的語句刪掉,這樣代碼中就不會出現直接圖片信息,我們參考以下的一段代碼:

PublicFunctionpicFilter(downCode)'定義一個過濾圖片信息的過程

DimpStartAsLong,pStopAsLong

DimpString1AsString,pString2AsString

pString1="<img"

pString2=">"'分別將兩個關鍵詞定義

pStart=InStr(downCode,pString1)'找到第一個圖片信息的起始位置

IfpStart<>0Then'如果代碼中有圖片信息的話

pStop=InStr(pStart,downCode,pString2) 1'從上面找的起始部位開始找到第一個用于結束圖片信息的”>”

DoWhilepStart<>0'只要仍舊有圖片信息

Mid(downCode,pStart,pStop-pStart)=Space(pStop-pStart)'將代碼中的圖片信息用空格代替,實現刪除效果

pStart=InStr(pStop,downCode,pString1)'重復上面的過程,刪除其他的圖片信息

IfpStart=0ThenExitDo'沒有圖片信息后,退出循環

pStop=InStr(pStart,downCode,pString2,1) 1

Loop

picFilter=downCode'將處理過后的代碼返回過程函數

EndFunction

接下來只要使用

lastResult=picFilterlastResult

就實現了對臨時變量中搜索結果代碼的圖片信息去除工作,以此類推,很容易去掉諸如”<font”、”<b”等信息。

  上面所說的是一種方法,但我們知道HTML語法中關鍵詞很多,如果都用以上的條件過濾的話,會使程序的效率大大降低,運行速度也會減慢很多。有沒有更好的方法?有,如果是有心人的話,您就會發現不同的搜索引擎返回的結果有其獨特的編排方式,我們仍舊以雅虎為例,你只要察看其返回的結果源代碼就會發現:每一條信息的鏈接和主題部分排列都是以“<LI>”開始,以“<A>”結束,而在“<A>”和接下來的第一個“<”之間的部分是該主題的簡單描述,這樣我們可以用下面的代碼來將雅虎搜索結果代碼中的有用信息提煉起來:

PublicFunctionyahooFilter(downCode)

DimsString1AsString,sString2AsString,sString3AsString

DimsStartAsLong,sStopAsLong

Dimstring1AsString,string2AsString,lastStringasstring

sString1="<LI>"

sString2="</A>"

sString3="<"

sStart=InStr(downCode,sString1)'取得第一條主題信息的起始位置

DoWhilesStart<>0

sStop=InStr(sStart,downCode,sString2)

string1=Mid(downCode,sStart 4,sStop-sStart)'將第一條主題信息存放在string1變量中

sStart=InStr(sStop,downCode,sString1)'從第一條主題信息的結束部位開始查找該主題的簡單描述

sStart=sStop 4

sStop=InStr(sStart,downCode,sString3)'取得該主題描述部分的結束位置

IfsStop=sStartThen'判斷只有主題而沒有描述的信息

string2=""

ElseIfsStop<>sStartThen

string2=Mid(downCode,sStart,sStop-sStart-1)'取出主題描述部分

EndIf

lastString=lastString "<p>" string1 string2'將提煉的結果存放在臨時變量中

sStart=InStr(sStop,downCode,sString1)'重新定位下一條信息的起始位置

Loop'循環

yahooFilter=lastString'

EndFunction


經過了上面復雜的提煉,然后將提煉的結果寫到一個網頁文件中,然后調用瀏覽器顯示,會出現整整齊齊的結果,象圖二一樣:

  返回頭來我們看一下現在比較流行的搜索軟件,比如SearchX98、Crazysearch、InforianQuest99,無論他們說明寫的再好,也跳不出上面所說的原理,但他們各自有自己的一些獨特之處,比如SearchX98能夠連續搜索多個引擎,其實就是發出一條搜索指令后,程序本身連續在各個搜索引擎發出搜索指令,將返回的結果經過簡單的處理生成一個頁面,其他的內容搜索更是最簡單的直接發出搜索指令而已。而對于Crazysearch,你只要打開注冊表,就會發現其中文搜索只能搜索中文雅虎,英文只能搜索Excite,但號稱注冊版本能夠搜索1000條記錄,其實您只要分析一下雅虎的搜索代碼就會發現,其中有一個關鍵詞是“n=”,代表一次搜索返回的結果數目;另外一個是“b=”,代表從第幾條記錄開始顯示,就這兩個關鍵詞起到了這么重大的作用,但Crazysearch的獨特之處在于返回的搜索結果以表格方式排列,直觀醒目。最后要推薦的是InforianQuest99,盡管其原理也超脫不了以上的范圍(您只要打開其目錄下的site子目錄中的文件就清楚了),但我還是極力推薦,因為無論是從站點的數量,搜索范圍的廣泛,搜索的速度,結果的詳細,沒有能過超過InforianQuset99的,而且要差很多。當然基于對國產軟件的支持,我們還是可以對上面的兩個軟件寄予厚望。同是由于本人水平有限,難免有疏漏之處,敬請大家指正。->


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
九九久久久久99精品| 久久久av免费| 日韩av网址在线观看| 性色av一区二区三区红粉影视| 亚洲一区中文字幕在线观看| 久久人人97超碰精品888| 午夜精品久久久久久久99黑人| 日韩美女av在线| 午夜精品www| 国产亚洲免费的视频看| 中文字幕亚洲天堂| 国产精品久久久久免费a∨大胸| 欧美日韩国产综合视频在线观看中文| 中文字幕日韩在线播放| 欧美成人免费全部观看天天性色| 亚洲一区二区三区四区视频| 欧美另类极品videosbestfree| 亚洲香蕉伊综合在人在线视看| 国产欧美精品日韩精品| 国内揄拍国内精品少妇国语| 欧美xxxx综合视频| 少妇精69xxtheporn| 一本色道久久综合狠狠躁篇怎么玩| 久久久久久91| 欧美高清自拍一区| 81精品国产乱码久久久久久| 国产精品久久久一区| 亚洲视频在线免费观看| 亚洲福利视频二区| 久久久久999| 一区二区三区四区在线观看视频| 亚洲精品一区中文字幕乱码| 91精品国产综合久久香蕉922| 成人午夜在线观看| 日韩一二三在线视频播| 午夜精品一区二区三区在线| 亚洲精选一区二区| 97精品国产97久久久久久免费| 色综合视频一区中文字幕| 精品久久久久久久大神国产| 自拍偷拍亚洲精品| 亚洲午夜国产成人av电影男同| 欧美一区二区三区免费视| 狠狠躁18三区二区一区| 国产欧美日韩中文字幕在线| 久久久999精品视频| 欧美激情精品久久久久久大尺度| 亚洲欧洲成视频免费观看| 亚洲网址你懂得| 午夜精品久久久久久久99热浪潮| 日韩中文理论片| 日韩在线不卡视频| 亚洲一区二区免费| 国产亚洲人成a一在线v站| 77777亚洲午夜久久多人| 欧美日韩午夜剧场| 亚洲欧美日韩区| 55夜色66夜色国产精品视频| 都市激情亚洲色图| 色婷婷综合久久久久| 欧美日韩国产精品一区二区不卡中文| 久久久久久网址| 麻豆乱码国产一区二区三区| 91久久精品国产| 亚洲人成伊人成综合网久久久| 国产欧美精品一区二区三区介绍| 国模精品系列视频| 精品国产乱码久久久久久天美| 91九色国产社区在线观看| 97视频在线观看成人| 清纯唯美亚洲综合| 91在线观看免费高清| 97在线观看视频| 亚洲综合国产精品| 日本欧美国产在线| 日韩精品免费在线视频| 欧美一区三区三区高中清蜜桃| 色爱av美腿丝袜综合粉嫩av| 日韩欧美综合在线视频| 中文字幕av一区二区三区谷原希美| 91精品美女在线| 欧美午夜激情在线| 中文字幕免费精品一区| 久久久久久久久久久人体| 欧美乱大交做爰xxxⅹ性3| 欧美—级a级欧美特级ar全黄| 中文字幕无线精品亚洲乱码一区| 国产日韩亚洲欧美| 日韩激情视频在线播放| 日韩免费av片在线观看| 国产不卡精品视男人的天堂| 日韩中文字幕国产精品| 91在线免费观看网站| 少妇久久久久久| 久久久99免费视频| 国产一区二区香蕉| 亚洲免费影视第一页| 成人免费视频xnxx.com| 欧美精品久久久久久久免费观看| 欧洲中文字幕国产精品| 欧美日韩中文在线观看| 亚洲乱码国产乱码精品精天堂| 亚洲精品av在线播放| 国产最新精品视频| 亚洲电影av在线| 欧美激情视频一区二区| 欧美专区国产专区| 久久九九热免费视频| 日韩av在线不卡| 久热在线中文字幕色999舞| 日韩在线观看av| 91香蕉国产在线观看| 日韩成人xxxx| 国产不卡在线观看| 久久这里有精品视频| 国产精品视频专区| 亚洲自拍欧美另类| 中日韩美女免费视频网站在线观看| 亚洲精品欧美日韩专区| 国产精品一香蕉国产线看观看| 丰满岳妇乱一区二区三区| 久久大大胆人体| 国产成人av网址| 欧美成人激情视频免费观看| 亚洲性猛交xxxxwww| 91亚洲精品久久久久久久久久久久| 国产成人精品国内自产拍免费看| 国产精品一区二区三区毛片淫片| 97人洗澡人人免费公开视频碰碰碰| 欧美成人合集magnet| 欧美不卡视频一区发布| 亚洲成人在线网| 亚洲伊人成综合成人网| 久久精品视频免费播放| 福利精品视频在线| 欧美激情亚洲一区| 久久久人成影片一区二区三区观看| 亚洲女同精品视频| 精品无人国产偷自产在线| 亚洲最大成人免费视频| 成人黄色在线观看| 亚洲v日韩v综合v精品v| 岛国av一区二区在线在线观看| 久久久久久久电影一区| 亚洲欧美日韩精品久久亚洲区| 97香蕉超级碰碰久久免费的优势| 国产乱人伦真实精品视频| 欧美黑人极品猛少妇色xxxxx| 国产精品69久久| 91免费欧美精品| 欧美一区二区大胆人体摄影专业网站| 欧美亚洲另类制服自拍| 亚洲人成人99网站| 欧美日韩精品在线观看| 91免费在线视频| 国内伊人久久久久久网站视频| 亚洲性生活视频| 亚洲免费视频一区二区| 97视频在线观看免费| 91精品国产91久久久久| 蜜臀久久99精品久久久无需会员| 97在线观看免费| 亚洲欧美中文日韩在线v日本| 中日韩美女免费视频网址在线观看|