零基础打造一款属于本身的网页搜索引擎

前言

在说这个以前,想必你们应该都比较了解搜索引擎了,它就是经过用户在浏览器输入框中输入文本,从而显示一些结果,你以为哪项符合你要搜索的内容,你就点击哪项。css

【1、项目准备】

浏览器:360浏览器html

编辑器:Sublime Text 3jquery

插件:Jquery-3.2.1.Min.Jsjson

【2、项目实现】

因为是要实现一个网页搜索引擎,因此咱们须要借用网页三剑客(Html+Css+Javascript),而后实现这一功能。浏览器

1.打开百度分析网页结构

咱们能够先看看百度的搜索引擎:服务器

能够看到,这个搜索框的部分设置,好比关闭自动完成功能。而后咱们在随便搜索内容来查看它的变化:网络

能够看到某些咱们查询的关键字,因而咱们便发现了请求规律:app

https://www.baidu.com/s?+查询字符参数

这就构成了咱们的一个完整的get请求,并且这里面有不少关键字参数能够省略掉,只须要保留重要的一部分就行了。因而,经试验,得出以下结论:编辑器

https://www.baidu.com/s?wd=keyword

这个才是请求的接口地址,只需将keyword参数替换为任意搜索关键字便可实现查询并跳转到相应结果页面。性能

2.编写Html输入框,搜索按钮

看过以前写的Html系列的文章,你将再也不对此感到困惑。

<html>
<head>
 <title></title>
 <style type="text/css">
    *{           内外边距初始时为0
       margin:0;    
       padding:0
    }
     input{
        width:300px;
        height:30px
    }
     span{
       position:absolute; 绝对定位
       background-color:red; 背景颜色
       border:1px solid gray; 边框设置
       width:60px;
       height:32px;
       text-align:center 文字位置
    }
    span:hover{ 鼠标悬停时的样式
        background-color:blue
    }
 </style>
</head>
<body>
<input type="text" name="" placeholder="请输入要搜索的内容"> 文本框
<span>search</span> 搜索按钮
</body>
</html>

编写完成后进入浏览器查看,便可看到:

能够看到,已经有点浏览器搜索框的意思了。

3.导入Jquery插件

<script src='jquery-3.2.1.min.js'></script>

4.编写js脚本

这个是重中之重,打开浏览器,network,继续分析:

能够看到搜索结果就在里面。而后打开这个请求的url地址,通过屡次实验,发现就只有图中标记的参数有变化:

image

因此咱们能够得出结论,咱们只须要改变这两个值便可。

1).建立删除脚本

因而我先建立一个脚本标签,不用它的时候随时能够清除,避免占用内存,致使页面打开迟缓,性能下降:

var script=document.createElement('script');  建立script的标签
script.id='jsonp';   设置id为jsonp
script.src='https://www.baidu.com/sugrec?prod=pc&cb=getData&wd='+wd;  设置它的地址
document.body.appendChild(script);   添加script元素到body中

而后等它不用了,随时将它删除:

var script=document.querySelector('#jsonp'); 选择id为jsonp的元素
script.parentNode.removeChild(script);     从这个元素的父元素中删除这个元素

2).生成选项下拉菜单

咱们在浏览器能够看到,只要一输入文本,它就会弹出对应的选项让咱们选择,那么这是如何办到的了?

<script>
function getlist(wd){    /*获取下拉列表*/
   var script=document.createElement('script');  /*建立script的标签*/
   script.id='jsonp';   /*设置id为jsonp*/
   script.src='https://www.baidu.com/sugrec?prod=pc&cb=getData&wd='+wd; /* 设置它的地址*/
   document.body.appendChild(script);   /*添加script元素到body中*/
}
function getData(data){  /*获取数据*/
     var script=document.querySelector('#jsonp'); /*选择id为jsonp的元素*/
     script.parentNode.removeChild(script);  /*从这个元素的父元素中删除这个元素*/
     $('ol').html('');  /* 设置有序列表的值为空*/
     var da=data.g;   /* 获取搜索的结果*/
  if(da){                     /*结果存在的话就将结果放到li标签中*/
   da.forEach(function(item,index){  
     $('<li><a target="_blank" href ="https://www.baidu.com/s?wd='+item.q+'">'+item.q+'</a></li>').appendTo('ol');
    })
    }
}



     /* 判断键盘是否按下*/
   $('input:text').keyup(function(){
      var wd=$(this).val();  /* 输入框的值*/
      if(wd==''){           /*若是值是空,那么就隐藏,不然显示*/
          $('ol').css('display','none');
          $('ol').css('zIndex',-10);  
      }else{
          $('ol').css('display','block');
       $('ol').css('zIndex',20);
      }
         getlist(wd);
  });
   </script>

能够看到,搜索结果已经出来了,并且有序列表下的"li"标签也都对应的生成了。

3).给选项标记序列

咱们能够看到,结果终于出来,可是我想给它个序列号,这样就能够知道搜索结果有多少个了。要设置的标记方式有不少种,能够以数字开头,也能够是大小写字母或者罗马时间。在这里我选择数字,很简单。

终于很是完美的实现了这一功能,是否是很惊艳了,赶快去试下吧。

4).搜索刷新

看到这里相信你们应该都知道这个功能已经算是完成了,咱们只须要随便点击哪一个li标签均可以访问到相应的页面。因而,我决定添加一个刷新的功能,属于重连服务器的那种刷新:

<span onclick='window.location.reload()'>search</span> 点击后当即刷新

【3、项目总结】

总的来讲,对于初学者小白是个很不错的练手项目,但愿你们能从中有所收获。

须要源码的小伙伴,后台回复“搜索引擎”四个字便可获取。
想学习更多Python网络爬虫与数据挖掘知识,可前往专业网站:http://pdcfighting.com/

相关文章
相关标签/搜索