第 18 章 個人入口網站的建立 18-1 入口網站的基礎 18-2 system.io...

32
第 18 第 第第第第第第第第第 • 18-1 第第第第第第第 • 18-2 System.IO 第第第第第第第 • 18-3 第第第第第第 • 18-4 Web Services 第第第 • 18-5 Google 第 Web Service • 18-6 Amazon 第 Web Service

Post on 21-Dec-2015

235 views

Category:

Documents


1 download

TRANSCRIPT

Page 1: 第 18 章 個人入口網站的建立 18-1 入口網站的基礎 18-2 System.IO 版全文檢索搜尋 18-3 網址搜尋引擎 18-4 Web Services 的基礎 18-5 Google 的 Web Service

第 18 章 個人入口網站的建立• 18-1 入口網站的基礎• 18-2 System.IO 版全文檢索搜尋• 18-3 網址搜尋引擎• 18-4 Web Services 的基礎• 18-5 Google的Web Service

• 18-6 Amazon的Web Service

Page 2: 第 18 章 個人入口網站的建立 18-1 入口網站的基礎 18-2 System.IO 版全文檢索搜尋 18-3 網址搜尋引擎 18-4 Web Services 的基礎 18-5 Google 的 Web Service

18-1 入口網站的基礎• 18-1-1 什麼是入口網站• 18-1-2 搜尋引擎的種類

Page 3: 第 18 章 個人入口網站的建立 18-1 入口網站的基礎 18-2 System.IO 版全文檢索搜尋 18-3 網址搜尋引擎 18-4 Web Services 的基礎 18-5 Google 的 Web Service

18-1 入口網站的基礎• 在網站內容的設計上,如果是建構「入

口網站」( Portal Site),例如:國外的Yahoo! 、微軟的 MSN 、國內的奇摩Kimo (台灣 Yahoo)、 SinaNet 新浪網、PC HOME 等網站,此時網站內容需要提供眾多資訊,入口網站的各種搜尋功能就是本章討論的主題。

Page 4: 第 18 章 個人入口網站的建立 18-1 入口網站的基礎 18-2 System.IO 版全文檢索搜尋 18-3 網址搜尋引擎 18-4 Web Services 的基礎 18-5 Google 的 Web Service

18-1-1 什麼是入口網站• 入口網站指的是連上 Internet 啟動瀏覽程

式後,瀏覽程式首頁第一個進入的網站,這類網站提供多樣化資訊,例如:搜尋引擎、新聞、股市行情、免費電子郵件和聊天室等,也可能是一份結合報紙、媒體和各類資訊的電子報,可以給網友一個一次看完的網路資訊需求。

Page 5: 第 18 章 個人入口網站的建立 18-1 入口網站的基礎 18-2 System.IO 版全文檢索搜尋 18-3 網址搜尋引擎 18-4 Web Services 的基礎 18-5 Google 的 Web Service

18-1-2 搜尋引擎的種類• 網站搜尋引擎的目的是快速找尋所需的資

訊,可以分成兩種,如下所示:– 網址搜尋

• 網址搜尋是找尋指定關鍵字的相關網站,其目的是透過搜尋引擎找尋有興趣或所需資訊的網址,這類搜尋引擎是使用者進入網路世界的窗口。

– 全文檢索搜尋• 因為網站內容愈來愈豐富,使用者如何在網站中快

速找到所需的資料,網站導覽介面的設計和內容的搜尋功能就成為網站必備的重要功能。

Page 6: 第 18 章 個人入口網站的建立 18-1 入口網站的基礎 18-2 System.IO 版全文檢索搜尋 18-3 網址搜尋引擎 18-4 Web Services 的基礎 18-5 Google 的 Web Service

18-2 System.IO 版全文檢索搜尋

• 18-2-1 遞迴函數的基礎• 18-2-2 遞迴全文檢索搜尋的程式

Page 7: 第 18 章 個人入口網站的建立 18-1 入口網站的基礎 18-2 System.IO 版全文檢索搜尋 18-3 網址搜尋引擎 18-4 Web Services 的基礎 18-5 Google 的 Web Service

18-2-1 遞迴函數的基礎• 遞迴是一種程式設計技巧,可以在程序或函數中呼

叫自已本身,以便簡化程式碼的長度。• 在撰寫遞迴的函數時有一些注意事項,基本上遞迴

函數需要擁有下列的條件,如下所示:– 一個終止條件:能夠終止遞迴函數的執行,以資料夾或

目錄的範例來說,就是一個沒有子資料夾,只有檔案的資料夾。

– 遞迴函式會縮小範圍:遞迴函數處理的範圍會愈來愈小,直到終上條件,如此遞迴函數才能結束執行,以資料夾來說,就是進入一層層的子資料夾,此時其下的子樹將愈來愈小。

Page 8: 第 18 章 個人入口網站的建立 18-1 入口網站的基礎 18-2 System.IO 版全文檢索搜尋 18-3 網址搜尋引擎 18-4 Web Services 的基礎 18-5 Google 的 Web Service

18-2-1 遞迴函數的基礎 -System.IO 版的遞迴全文檢索搜

尋• 遞迴程序完成網站全文檢索搜尋的功能,其特點如

下所示:– 搜尋所有的子目錄:遞迴程序可以搜尋所有子目錄檔案,

程式能夠指定查詢的檔案類型和搜尋數目。– 提供繼續查詢功能:如果找到的指定數目檔案並沒有所

需的資料,能夠從上一次最後查詢處,再往下繼續查詢,直到全部查完為止。

– 多條件查詢:查詢的 Web 表單支援 AND和OR 邏輯連結,可以處理一個條件以上的全文檢索查詢。

– 指定查詢範圍:能夠指定全文檢索的目標為網站的虛擬目錄,不過搜尋時是以實際資料夾進行搜尋。

Page 9: 第 18 章 個人入口網站的建立 18-1 入口網站的基礎 18-2 System.IO 版全文檢索搜尋 18-3 網址搜尋引擎 18-4 Web Services 的基礎 18-5 Google 的 Web Service

18-2-2 遞迴全文檢索搜尋的程式

• 在建立好 Web 表單輸入查詢的關鍵字後,接下來就可以撰寫遞迴全文檢索函數的 ASP.NET程式,以完成搜尋的工作,其流程圖如下所示:

取得表單的關鍵字條件陣列和搜尋目錄

使用搜尋目錄取得其下的子目錄和檔案

如果是檔案就搜尋關鍵字,如果是子目錄遞迴呼叫自己移往下一層目錄

Page 10: 第 18 章 個人入口網站的建立 18-1 入口網站的基礎 18-2 System.IO 版全文檢索搜尋 18-3 網址搜尋引擎 18-4 Web Services 的基礎 18-5 Google 的 Web Service

18-3 網址搜尋引擎• 18-3-1 網址搜尋引擎的資料表• 18-3-2 網址搜尋引擎的 ASP.NET 程式

Page 11: 第 18 章 個人入口網站的建立 18-1 入口網站的基礎 18-2 System.IO 版全文檢索搜尋 18-3 網址搜尋引擎 18-4 Web Services 的基礎 18-5 Google 的 Web Service

18-3 網址搜尋引擎• 入口網站的網址搜尋引擎可以搜尋符合

相關條件的網站或網頁,在實作上就是使用資料庫儲存這些網址資訊,然後使用 SQL 查詢指令搜尋資料表的記錄。

Page 12: 第 18 章 個人入口網站的建立 18-1 入口網站的基礎 18-2 System.IO 版全文檢索搜尋 18-3 網址搜尋引擎 18-4 Web Services 的基礎 18-5 Google 的 Web Service

18-3-1 網址搜尋引擎的資料表 -WebSearch 資料表

• Access 資料庫【WebSearch.mdb】的資料表WebSearch儲存網站的相關資訊,如下表所示:

欄位名稱 資料類型 大小 說明

SiteID 自動編號 網站的編號

SiteName 文字 50 網站的名稱

URL 文字 100 網站的 URL網址

Description 備忘 網站說明

Keywords 文字 100 網站搜尋的關鍵字

Page 13: 第 18 章 個人入口網站的建立 18-1 入口網站的基礎 18-2 System.IO 版全文檢索搜尋 18-3 網址搜尋引擎 18-4 Web Services 的基礎 18-5 Google 的 Web Service

18-3-1 網址搜尋引擎的資料表 -SQL 指令

• SQL 查詢指令搜尋所需的網址記錄,其程式碼如下所示:

strSQL = "SELECT * From WebSearch WHERE SiteName LIKE '%" & _

keyword

strSQL &= "%' OR URL LIKE '%" & keyword & "%' OR Description LIKE '%"

strSQL &= keyword & "%' OR Keywords LIKE '%" & keyword & "%'"

Page 14: 第 18 章 個人入口網站的建立 18-1 入口網站的基礎 18-2 System.IO 版全文檢索搜尋 18-3 網址搜尋引擎 18-4 Web Services 的基礎 18-5 Google 的 Web Service

18-3-2 網址搜尋引擎的ASP.NET 程式

• 程式範例提供網址搜尋和新增網址的兩個ASP.NET 程式, ASP.NET 程式只是網頁資料庫查詢和操作,如下所示:– Ch18-3.aspx

• 建立搜尋的 Web 表單,在建立 SQL 指令字串查詢資料表後,使用 DataGrid控制項以分頁顯示搜尋的結果。

– Ch18-3Add.aspx• ASP.NET 程式建立輸入網站資料的 Web 表單,使用

SQL的 INSERT 指令插入資料表。

Page 15: 第 18 章 個人入口網站的建立 18-1 入口網站的基礎 18-2 System.IO 版全文檢索搜尋 18-3 網址搜尋引擎 18-4 Web Services 的基礎 18-5 Google 的 Web Service

18-4 Web Services 的基礎• 18-4-1 什麼是 Web Services

• 18-4-2 Web Services應用程式架構

Page 16: 第 18 章 個人入口網站的建立 18-1 入口網站的基礎 18-2 System.IO 版全文檢索搜尋 18-3 網址搜尋引擎 18-4 Web Services 的基礎 18-5 Google 的 Web Service

18-4-1 什麼是 Web Services

• Web Services屬於一種企業級的應用程式,可以透過 Internet 建立自動機制提供資料交換和工作分享等資源共享的功能。

• Web Services應用程式提供一組通用服務,可以同時提供多個客戶端( Client)使用,這是一組使用 XML 標籤作為傳遞訊息的函數呼叫,客戶端透過 HTTP傳送函數呼叫給伺服端,伺服端以 HTTP 將結果傳回給客戶端。

Page 17: 第 18 章 個人入口網站的建立 18-1 入口網站的基礎 18-2 System.IO 版全文檢索搜尋 18-3 網址搜尋引擎 18-4 Web Services 的基礎 18-5 Google 的 Web Service

18-4-2 Web Services應用程式架構 - 說明

• Web Services 提供一組通用的遠端函數呼叫( RPC, Remote Procedure Calls),以便客戶端可以使用這些函數呼叫執行所需的服務,為了客戶端和伺服端能夠依據相同的訊息格式和規格來傳遞資訊和呼叫,這就是「 SOAP」( Simple Object Access Protocol),這是一種結合XML 標籤訊息和 HTTP協定的通訊協定。

Page 18: 第 18 章 個人入口網站的建立 18-1 入口網站的基礎 18-2 System.IO 版全文檢索搜尋 18-3 網址搜尋引擎 18-4 Web Services 的基礎 18-5 Google 的 Web Service

18-4-2 Web Services應用程式架構 -WSDL

• 「WSDL」(Web Services Description Language)語言是用來描述Web Services服務,這是一種 XML 基礎的語言,用來定義Web Services 和描述如何使用此 Web Services服務的語言。

Page 19: 第 18 章 個人入口網站的建立 18-1 入口網站的基礎 18-2 System.IO 版全文檢索搜尋 18-3 網址搜尋引擎 18-4 Web Services 的基礎 18-5 Google 的 Web Service

18-5 Google的Web Service

• 18-5-1 申請 Google 的搜尋服務• 18-5-2 使用 Google 搜尋服務的 Web

Service

Page 20: 第 18 章 個人入口網站的建立 18-1 入口網站的基礎 18-2 System.IO 版全文檢索搜尋 18-3 網址搜尋引擎 18-4 Web Services 的基礎 18-5 Google 的 Web Service

18-5-1 申請 Google 的搜尋服務

• 如果 Web 站台需要使用 Google 搜尋服務的Web Service ,首先我們需要成為Google 會員,並且取得使用搜尋服務的授權碼。– 申請 Google 會員– 取得 Web Service 的授權碼– 取得 GoogleSearch.wsdl

Page 21: 第 18 章 個人入口網站的建立 18-1 入口網站的基礎 18-2 System.IO 版全文檢索搜尋 18-3 網址搜尋引擎 18-4 Web Services 的基礎 18-5 Google 的 Web Service

18-5-2 使用 Google 搜尋服務的Web Service-步驟

• 在申請 Google 會員取得 Web Service授權碼和 WSDL 檔案後,接下來我們就可以編譯WSDL 檔案,建立 ASP.NET 程式使用 Google的Web Service。– 編譯Web Service的 C# 類別檔– 在 ASP.NET 程式使用 Web Service的 C# 類別檔案

Page 22: 第 18 章 個人入口網站的建立 18-1 入口網站的基礎 18-2 System.IO 版全文檢索搜尋 18-3 網址搜尋引擎 18-4 Web Services 的基礎 18-5 Google 的 Web Service

18-5-2 使用 Google 搜尋服務的Web Service-編譯 C# 類別

檔• 切換到 WSDL 檔案 GoogleSearch.wsdl 的

資料夾,執行下列指令編譯WSDL 檔案,如下所示:D:\ASP.NET\Ch18>wsdl googlesearch.wsdl Enter

• 在按下 Enter 鍵後,稍等一下,可以看到成功輸出 GoogleSearchService.cs的 C#類別檔案。

Page 23: 第 18 章 個人入口網站的建立 18-1 入口網站的基礎 18-2 System.IO 版全文檢索搜尋 18-3 網址搜尋引擎 18-4 Web Services 的基礎 18-5 Google 的 Web Service

18-5-2 使用 Google 搜尋服務的Web Service- 建立物件

• 將 C# 類別檔案視為 ASP.NET 的外部程式檔案,如下所示:

<%@ Page language="vb" Src="GoogleSearchService.cs"%>

• ASP.NET 程式以 VB.NET語法使用 Web Service ,而 Google的Web Service 就是建立GoogleSearchService物件,如下所示:

Dim objGoogle As GoogleSearchService = New GoogleSearchService()

• 在使用 GoogleSearchService 建構子建立GoogleSearchService物件,然後就可以使用doGoogleSearch()方法取得 Google 的搜尋結果。

Page 24: 第 18 章 個人入口網站的建立 18-1 入口網站的基礎 18-2 System.IO 版全文檢索搜尋 18-3 網址搜尋引擎 18-4 Web Services 的基礎 18-5 Google 的 Web Service

18-5-2 使用 Google 搜尋服務的Web Service- 執行搜尋

• 建立 GoogleSearchService物件,然後使用方法取得 Google 的搜尋結果,如下所示:

Dim objResult As GoogleSearchResult = objGoogle.doGoogleSearch( _

GoogleKey, searchText, recordNo, PageSize, False, "", False, "", "", "")

Page 25: 第 18 章 個人入口網站的建立 18-1 入口網站的基礎 18-2 System.IO 版全文檢索搜尋 18-3 網址搜尋引擎 18-4 Web Services 的基礎 18-5 Google 的 Web Service

18-5-2 使用 Google 搜尋服務的Web Service-顯示結果

• 每一個找到的網站是一個 ResultElement物件,可以使用 For 迴路取得每一個物件,如下所示:

For i = 0 To objResult.resultElements.GetUpperBound(0)

……objResult.resultElements(i).summary.ToString()

……objResult.resultElements(i).URL.ToString()

…………

Next

Page 26: 第 18 章 個人入口網站的建立 18-1 入口網站的基礎 18-2 System.IO 版全文檢索搜尋 18-3 網址搜尋引擎 18-4 Web Services 的基礎 18-5 Google 的 Web Service

18-6 Amazon的Web Service

• 18-6-1 申請 Amazon 的搜尋服務• 18-6-2 使用 Amazon 搜尋服務的 Web

Service

Page 27: 第 18 章 個人入口網站的建立 18-1 入口網站的基礎 18-2 System.IO 版全文檢索搜尋 18-3 網址搜尋引擎 18-4 Web Services 的基礎 18-5 Google 的 Web Service

18-6-1 申請 Amazon 的搜尋服務

• Amazon 圖書搜尋服務的 Web Service 類似 Google的Web Service ,也需要先申請取得 Developer‘s Token 。

• 下載 Web Services Development Kit ,取得AmazonWebServices.wsdl 檔案。

Page 28: 第 18 章 個人入口網站的建立 18-1 入口網站的基礎 18-2 System.IO 版全文檢索搜尋 18-3 網址搜尋引擎 18-4 Web Services 的基礎 18-5 Google 的 Web Service

18-6-2 使用 Amazon 搜尋服務的Web Service-編譯 C# 類別

檔• 切換到 WSDL 檔案

AmazonWebServices.wsdl 的資料夾,執行下列指令編譯WSDL 檔案,如下所示:

D:\ASP.NET\Ch18>wsdl AmazonWebServices.wsdl Enter

• 在按下 Enter 鍵後,稍等一下,可以看到成功輸出 AmazonSearchService.cs的 C#類別檔案。

Page 29: 第 18 章 個人入口網站的建立 18-1 入口網站的基礎 18-2 System.IO 版全文檢索搜尋 18-3 網址搜尋引擎 18-4 Web Services 的基礎 18-5 Google 的 Web Service

18-6-2 使用 Amazon 搜尋服務的Web Service- 建立物件

• ASP.NET 程式只需將 C# 類別檔案視為外部程式檔案,如下所示:

<%@ Page language="vb" Src="AmazonSearchService.cs" %>

• 只需知道此類別檔案定義的類別屬性和方法,就可以在ASP.NET 程式以 VB.NET語法使用 Web Service,Amazon的Web Service 就是建立GoogleSearchService物件,如下所示:

Dim objAmazon As AmazonSearchService = New AmazonSearchService()

• 上述程式碼使用 AmazonSearchService 建構子建立AmzoneSearchService物件。

Page 30: 第 18 章 個人入口網站的建立 18-1 入口網站的基礎 18-2 System.IO 版全文檢索搜尋 18-3 網址搜尋引擎 18-4 Web Services 的基礎 18-5 Google 的 Web Service

18-6-2 使用 Amazon 搜尋服務的Web Service- 建立請求物件

• 建立搜尋 Amazon請求的 KewordRequest物件,如下所示:

Dim objRequest As KeywordRequest = New KeywordRequest()

objRequest.keyword = searchText

objRequest.devtag = AmazonToken

objRequest.mode = "books"

objRequest.type = "lite"

objRequest.page = pageNo

Page 31: 第 18 章 個人入口網站的建立 18-1 入口網站的基礎 18-2 System.IO 版全文檢索搜尋 18-3 網址搜尋引擎 18-4 Web Services 的基礎 18-5 Google 的 Web Service

18-6-2 使用 Amazon 搜尋服務的Web Service- 執行搜尋

• 在建立好 KeywordRequest 的搜尋請求物件後,就可以使用 AmzoneSearchService物件的 KeywordSearchRequest方法取得搜尋結果,如下所示:

Dim objResult As ProductInfo = _

objAmazon.KeywordSearchRequest(objRequest)

Page 32: 第 18 章 個人入口網站的建立 18-1 入口網站的基礎 18-2 System.IO 版全文檢索搜尋 18-3 網址搜尋引擎 18-4 Web Services 的基礎 18-5 Google 的 Web Service

18-6-2 使用 Amazon 搜尋服務的Web Service- 取得結果

• 取得的搜尋結果是 ProductInfo物件,這是 Details類別的物件集合,每一個 Details物件是一個搜尋結果,可以使用 For 迴路取得每一個搜尋結果的產品資料,如下所示:

For i = 0 To objResult.Details.GetUpperBound(0)

objRow = objDataSet.Tables("AmazonProducts").NewRow

objRow("ASIN") = objResult.Details(i).Asin.ToString()

objRow("ProductName") = objResult.Details(i).ProductName.ToString()

………………

objDataSet.Tables("AmazonProducts").Rows.Add(objRow)

Next