程序员

百度站内搜索https不可用切换api搜索,加上谷歌api站内搜

2019-01-11  本文已影响44人  zhoulujun

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

没有做代码优化,只是抽点空把自己网站功能修复而已

按上面的操作的和应该可以配置

上一篇下一篇

猜你喜欢

热点阅读