本文主要介紹如何通過Google的API來定義自己的搜索引擎,並將Google搜索框嵌入到自己的web頁面。另外,分析了自定義搜索引擎請求數據的url,模擬請求並獲取搜索的結果。
1 寫在前面
前段時間發現了一個網站提供搜索百度網盤資源,挺好用的,但是廣告很多,於是自己做了一個Winform窗體程序去獲取該網站的數據請求,解析並綁定請求的結果。最后,也將實現Winform程序的這一過程分享到了博客園中,也就是我上一篇博文《百度網盤資源搜索器 》。
后面我發現提供網盤資源搜索的網站內部是利用google搜索引擎的api來完成的。在網上搜索了一些資料,搗鼓了google自定義搜索引擎的功能,發現確實挺好玩的。后面又有同仁問能不能介紹一下如何實現使用google搜索的api,那么下面就開始吧。
2 自定義搜索引擎
1)自定義google的搜索引擎,那首先得有一個google的賬號呀,這也是第一步,先注冊一個google的賬號。
2)注冊google的賬號之后,進入自定搜索引擎的頁面,https://cse.google.com/cse/,頁面如下。
3)點擊右側的【新增搜索引擎】,填寫你搜搜引擎的基本配置。頁面如下。
我可以看到,只需要配置三項即可完成自定義搜索引擎。
- 第一個是你需要搜索的網站,也就是說你自定義的這個搜索引擎只會在你填寫的單個網頁、整個網站或者整個域中去搜索你要想要的信息。在這里我們以百度網盤資源為例,填寫
www.pan.baidu.com
。 - 第二個是語言,這個我們選擇所有語言。
- 最后一個是搜索引擎的名稱,我們就填寫【百度雲盤搜索】
4)點擊創建,就實現了自己的搜索引擎,點擊右側的【修改搜索引擎】的頁面,如下圖。
在修改搜索引擎的頁面中有一個【搜索引擎ID】,這個特別關鍵,你可以點擊它,查看你這個搜索引擎的id編碼,還可以公開你這個搜索引擎的網址。還有一個很重要的就是【獲取代碼】,獲取這段代碼就能夠實現將自定義的搜索引擎框嵌入到你自己定義的web頁面中,點擊【獲取代碼】。能夠獲取到一段html代碼,如下:
另外,在上面步驟4)的截圖1中,可以測試一下,你自定義的搜索引擎。在這里,我們輸入【數學】關鍵字,結果如下。
3 如何使用自定義搜索引擎
在第二小節中我們已經創建了屬於我們的搜索引擎了,那么下面我們如何使用它。在這里,我采用兩種方式,第一種方式直接將第二節中的代碼拷貝出來,並嵌入到自己web頁面中;第二種方式是分析自定義搜索引擎請求的url結構和請求方式,然后去構造搜索的url,模擬請求獲取查詢結果。
3.1 嵌入web頁面
首先自定一個html頁面,然后把第二節中講到的代碼拷貝到div中,代碼如下。
<html>
<body>
<meta charset="utf-8">
<style type="text/css">
#main{
width:750px;
margin:20px auto;
}
#main p{
text-align:center;
font-size:25px;
font-weight:bold;
margin-button:100px;
}
</style>
</body>
<head>
<div id="main">
<p>
百度網盤資源搜索器@Jaume
</p>
<script>
(function() {
var cx = '搜索引擎ID';
var gcse = document.createElement('script');
gcse.type = 'text/javascript';
gcse.async = true;
gcse.src = 'https://cse.google.com/cse.js?cx=' + cx;
var s = document.getElementsByTagName('script')[0];
s.parentNode.insertBefore(gcse, s);
})();
</script>
<gcse:search></gcse:search>
</div>
</head>
</html>
注意:上面的var cx='搜索引擎ID
,這個【搜索引擎ID】就是第二節創建自定義搜索引擎時自動生成的,將你創建的搜索引擎ID替換到這里即可。下面是頁面效果。
這下就實現了將自定義搜索引擎嵌入到自己的web頁面。
3.2 模擬請求
通過分析,搜索引擎搜索請求的url為:
https://www.googleapis.com/customsearch/v1element?key=AIzaSyCVAXiUzRYsML1Pv6RwSG1gunmMikTzQqY&rsz=filtered_cse&num=10&hl=zh_CN&prettyPrint=false&source=gcsc&gss=.com&sig=0c3990ce7a056ed50667fe0c3873c9b6&cx=搜索引擎ID&q=數學&sort=&googlehost=www.google.com
url主要參數分析:
- cx:搜索引擎ID
- q:搜索關鍵
- sort:搜索結果排序方式
構造上面這種模式的url,采用GET的方式去請求,會得到如下返回的json數據,json數據包含了搜索結果以及附帶屬性(搜索結果總數等)。如下圖所示。
明白了引擎請求搜索結果的這一流程,那么用c#語言來實現就非常簡單了。代碼非常簡單,就不貼出來。
4 總結
使用google的api自定義搜索引擎最最關鍵的一點就是,你的機器要能夠訪問google。要是不能訪問google,那就只能/(ㄒoㄒ)/~~。本文舉的例子是搜索百度網盤資源,當然你也可以搜索博客園的所有資源。
其實,google自定義搜索引擎api還有更加精彩設置,你可以去玩玩。