1. 程式人生 > >百度站內搜尋https不可用切換api搜尋,加上谷歌api站內搜尋

百度站內搜尋https不可用切換api搜尋,加上谷歌api站內搜尋

google推https幾年了,百度開始宣傳全面https,但是,百度站內搜尋 自己的服務卻不走https,介面報錯。百度分享也是。

然後採用http://search.zhoulujun.cn/cse/search ,用了7-8個月的樣子,還是繼續,不聲不響地 改變了配置了,突然就不通了——而且什麼時候不通的都不知道

無賴,無奈,只有用google 自定義搜尋引擎,用api 介面弄好

用google search API配置google站內搜尋

谷歌搜尋引擎定製化頁面地址

https://cse.google.com/cse/setup/basic?cx=009558619093950188775:b3wc7giu_hw

複製 搜尋引擎 ID ,儲存

拖到最下面,找到 

自定義搜尋 JSON API

每天的查詢數上限為 10000 次。

直接開啟連線,可以閱讀下內容,瞭解下

在此https://developers.google.com/custom-search/v1/overview

頁面找到 API key,點選 GET A KEY 按鈕,

複製key,儲存

然後拼湊如下地址:

https://www.googleapis.com/customsearch/v1?q=css&siteSearch=zhoulujun.cn&key=AIzaSyC_pehzzjm8_6lbsegGNgct1-LaACSpvkM&cx=009558619093950188775:b3wc7giu_hw

就是你的谷歌自定義站內搜尋引擎

谷歌的就完成了,再來看下百度:

用百度站內搜尋api配置百度站內搜尋

登入百度站內頁面,點選 進入API管理後臺

新建搜尋引擎,點選 程式碼示例

在程式碼裡面獲取如下程式碼地址:http://zhannei.baidu.com/api/customsearch/apiaccept?sid=6351075239166713563&v=2.0&callback=init

直接下載,上傳自己服務,引用。

然後配置如下程式碼

    var cse ;    //引數為您的API引擎ID,已自動填寫,必需。
    var form=document.querySelector('searchBaidu-bd');//關鍵詞輸入框
    var textInput=document.getElementById('bdcsMain');//關鍵詞輸入框
    var btnInput=document.getElementById("search");//搜尋按鈕
    var listBox=document.getElementById("list");//搜尋結果列表框
    var exchange=document.getElementById("exchange");//搜尋結果列表框
    var exchangeEngine=document.getElementById("exchangeEngine");//搜尋結果列表框
    var searchEngine=document.getElementById("searchEngine");//搜尋結果列表框
    let params=getUrlParams(window.location.search);
    let initKeyword=params['q'];
    if(initKeyword){
        initKeyword=decodeURIComponent(initKeyword);
        textInput.value=initKeyword;
    }
    var googleEnable=false;
    function getUrlParams(str){
        let obj={};
        str.replace(/([^&=?]+)=([^&=?]*)/g,function (str,$1,$2) {
            obj[$1]=$2;
            return str;
        });

        return obj;
    }

    function searchBaidu (text) {
        cse.getResult(text, function (data) {
            console.info('百度搜索結果');
            console.log(data);
            createList(data,listBox)
        });
    }

    function init () {
        cse= new BCse.Search("6351075239166713563");
        initKeyword&&searchBaidu(initKeyword);
    }

    function createList(arr,select){
        var str='';
        if(arr&&arr.length){
            let tempArr = arr.map(function (data) {
                return ' <li class="article-li  ">' +
                    '                <a class="" href="'+data.linkUrl+'" target="_blank">'+data.title+'</a>' +
                    '                <time>'+data.dispTime+'</time>' +
                    '            </li>';
            });
            str=tempArr.join('');
        }else {
            str='<li> 沒有找到相關內容——the suitable context had not been found all the time. </li>';
    }

        select.innerHTML=str;
        searchEngine.innerHTML='百度';
        exchangeEngine.innerHTML='切換為谷歌搜尋';
    }
    btnInput.addEventListener('click',function (e) {
        e.preventDefault();
        var text=textInput.value;
        if(googleEnable){
            text&&searchByGoogle(text);
        }else {
            text&&searchBaidu(text);
        }
    });

    exchange.addEventListener('click',function (e) {
        e.preventDefault();
        window.location='?m=search&c=index&a=init&siteid=1&typeid=1&q='+textInput.value;
    });
    exchangeEngine.addEventListener('click',function (e) {
        e.preventDefault();
        var text=textInput.value;
        console.info('exchangeEngine.innerText');
        console.log('__________');
        if(exchangeEngine.innerText==='切換為百度搜索'){
            text&&searchBaidu(text);
            googleEnable=true;
            return false;
        }else {
            text&&searchByGoogle(text);
            googleEnable=false;
            return false;
        }


    });

    function hndlr(response) {
        // console.log(JSON.stringify(response));
        console.log(response);
        var str='';
        if(response&&response.items&&response.items.length){

            let tempArr = response.items.map(function (data) {
                return ' <li class="article-li  ">' +
                    '                <a class="" href="'+data.link+'" target="_blank">'+data.htmlTitle+'</a>' +
                    '            </li>';
            });
            str=tempArr.join('');

        }else {
            str='<li>沒有找到相關內容</li>';
        }
        listBox.innerHTML=str;
        searchEngine.innerHTML='谷歌';
        exchangeEngine.innerHTML='切換為百度搜索';
    }

    function searchByGoogle(keyword){
        $.ajax({
            type: 'GET',
            url: 'https://www.googleapis.com/customsearch/v1',
            data: {
                q: keyword,
                key:'AIzaSyC_pehzzjm8_6lbsegGNgct1-LaACSpvkM',
                cx:'009558619093950188775:b3wc7giu_hw',
                siteSearch: 'zhoulujun.cn'

            },
            dataType: 'json',
            success: function (data) {
                console.info('google搜尋結果');
                console.log(data);
                googleEnable=true;
                hndlr(data)
            },
            error:function (data) {
                hndlr();
                // let timer=setTimeout(function () {
                //     searchBaidu(textInput.value);
                //     clearTimeout(timer);
                // },800)
            }

        });
    }

    searchByGoogle(initKeyword);
    /*function setBaidu () {
        var  scriptEle=document.createElement('script');
        scriptEle.src="{JS_PATH_CDN}andy/baidu.zn.js";
        document.body.appendChild(scriptEle);
    }*/

具體程式碼和效果可以參看:

https://www.zhoulujun.cn/index.php?m=content&c=index&a=lists&catid=204&q=%E6%93%8D

沒有做程式碼優化,只是抽點空把自己網站功能修復而已

按上面的操作的和應該可以配置