除了使用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 擷取網頁問題