[C#][VB.NET]取得Google搜尋的結果

  • 25410
  • 0
  • 2010-08-02

除了使用Google API外,能否直接從程式輸入關鍵字,送到Goodgle去搜尋,並顯示出搜尋出的網址與名稱

 

一、問題描述

除了使用Google API外,能否直接從程式輸入關鍵字,送到Goodgle去搜尋,並顯示出搜尋出的網址與名稱


二、方法

此問題可分為以下步驟

1. 將關鍵字送到Google做搜尋,並取得搜尋結果網頁的原始碼

3. 從原始碼中取得搜尋出的網址與名稱

三、程式碼

C#


// 此程式碼取出搜尋結果中關鍵的網頁原始碼,有需要的請自行對結果做字串處理 
// 1. 將關鍵字送到Google做搜尋,取得搜尋結果網頁的原始碼 
string url = @"http://www.google.com.tw/search?hl=zh-TW&q=" + this.txtKeyWord.Text + @"&meta=&aq=f&oq="; 
WebClient objWebClient = new WebClient(); 
string strContext = System.Text.Encoding.Default.GetString(objWebClient.DownloadData(new Uri(url.Trim()))); 
// 2. 從原始碼中取得搜尋出的網址與名稱 
MatchCollection matches = Regex.Matches(strContext, @"<h3 class=r><a.+?href=[\""'](?<href>.+?)[\""'].+?></h3>"); 
foreach (Match m in matches) 
{ 
    this.listBox1.Items.Add(m.Value.ToString());  // 將結果顯示於ListBox1中 
} 

VB.NET


        '此程式碼取出搜尋結果中關鍵的網頁原始碼,有需要的請自行對結果做字串處理 
        '1. 將關鍵字送到Google做搜尋,取得搜尋結果網頁的原始碼 
        Dim url As String = "http://www.google.com.tw/search?hl=zh-TW&q=" & Me.txtKeyWord.Text & "&meta=&aq=f&oq="
        Dim objWebClient As New System.Net.WebClient
        Dim strContext As String = System.Text.Encoding.Default.GetString(objWebClient.DownloadData(New Uri(url.Trim())))
        '2. 從原始碼中取得搜尋出的網址與名稱 
        Dim matches As System.Text.RegularExpressions.MatchCollection = System.Text.RegularExpressions.Regex.Matches(strContext, "<h3 class=r><a.+?href=[\""'](?<href>.+?)[\""'].+?></h3>")
        For Each m As System.Text.RegularExpressions.Match In matches
            Me.ListBox1.Items.Add(m.Value.ToString())   '將結果顯示於ListBox1中 
        Next

 

四、執行結果

 

五、參考

藍色小舖  不開網頁搜尋

MSDN討論區  VB2008 擷取網頁問題