教你把百度的关键字搜索偷过来用用。

boyanx2个月前技术教程9

话不多说,先上效果图。

怎么样,是不是和在用百度一下时,关键字搜索补全一样一样的。

今天下午没什么事,打开百度首页的Newwork看了一下,发现我每次输入内容后,它都会把我们输入的内容发送到后台,后台返回这些关键字的联想条目,我们只需要把这些条目放到页面中,就可以实现上图所示的demo了。

下面我们就来看看怎么获取这些内容。

先打开百度首页,我是用的chrome浏览器,F12,选到Network(你可能发现Network中是空的,刷新一下页面就好了):

看到一大堆请求过来的文件,下面我们要找到关键的文件,也就是我们输入时,百度返回的文件,最快速的方法就是输入一大堆的字母,这样可以很方便的找到,我输入了一大堆的ssssss.....:

看到这些返回的文件吗,wd=ssssssssssss....,我们随便双击一条,把弹出窗口中的Request URL里的网址复制下来,这个就是我们完成关键字搜索的请求路径。

我们可以把网址直接复制到浏览器地址栏,看看得到的是个什么东西:

 1 jQuery110204129574971066774_1467359127325({
 2 "q": "哈哈是什么yisi",
 3 "p": true,
 4 "bs": "",
 5 "csor": "9",
 6 "g": [
 7 {
 8 "q": "哈哈是什么意思",
 9 "t": "n",
10 "st": {
11 "q": "哈哈是什么意思",
12 "new": 0
13 }
14 },
15 {
16 "q": "哈哈哈哈是什么意思",
17 "t": "n",
18 "st": {
19 "q": "哈哈哈哈是什么意思",
20 "new": 0
21 }
22 }
23 ],
24 "s": [
25 "哈哈是什么意思",
26 "哈哈哈哈是什么意思"
27 ]
28 });

点击展开

得到的数据是一个对象,不过对象被包裹在一个函数内,这个格式是不是很熟悉啊,对,就是jsonp!分析完这个数据格式,发现我们需要的是这个对象下的s数组里的数据,那我们就把s里的数据拿出来插入到页面中就行了,开始吧!

<!DOCTYPE html>
<html>
    <head>
        <meta charset="UTF-8">
        <title></title>
        <script type="text/javascript" src="js/jquery-2.1.0.js" ></script>
    </head>
    <body>
        <input type="text" onkeyup="require" id="search"/>
        <div id="show"></div>
 <script>
 //do something......
 </script>
    </body>
</html>    

这段html代码很简单,引入了jQuery,一个输入框,一个承载返回内容的div,我么直接把script写在body的最下面,当我么输入时手指抬起,就去调用require函数,这个函数里就是我们的关键代码。(大家可以想想为什么要用onkeyup,这是个坑)

 1 function require{
 2     var search = $("#search").val;
 3     var _url = 'https://sp0.baidu.com/5a1Fazu8AA54nxGko9WTAnF6hhy/su?wd='+search+'&json=1&p=3&sid=20144_1467_19033_20515_18240_17949_20388_20456_18133_17001_15202_11615&req=2&csor=2&pwd=s&cb=jQuery110207612423721154653_1467355506619&_=1467355506623'; 4 $.ajax({ 5 type:"get", 6 url:_url, 7 async:true, 8 dataType:'jsonp', 9 jsonpCallback:'jQuery110207612423721154653_1467355506619', 10 success:function(data){ 11 console.log(data); 12 var list = data.s; 13 var str =""; 14 for(var i in list){ 15 str+='<p>'+list[i]+'</p>'; 16 } 17 $("#show").html(str); 18 } 19 }); 20 }

当require函数被触发时,执行以上代码,我们来分析一下上面的代码。

先获取到输入框的内容,再定义一个_url,把我们之前得到的url地址附给这个变量,但是注意要把关键字的值改成输入框内的值,这样才能动态获取,不然你一直都在请求一个固定的关键字(上面把_url中的search标红加粗了)。

准备工作做好,可以发起ajax请求了,因为是jsonp的格式,所以要设置dataType:'jsonp',并告诉jQuery回调函数的名称,这个名称可以在浏览器中得到(之前在浏览器地址栏输入url,得到的数据被包含在一个函数里,这里的jsonpCallback就写那个函数的名称,每个人的都不一样)。

现在我们只需要把数据console.log出来,并解析到页面上,就可以实现文章开头的效果了,简单吧!(记得放在服务器环境运行哦!)下面附上源码:

相关文章

前端框架 Vue 不要一开始就用脚手架~Axios 中的GET、POST请求

作为后端攻城狮,写前端代码是一种什么体验?相信不少人和 @Python大星 一样,有写过前端代码的经历。记录一下,Vue 框架开发中“啼笑皆非”的故事,非专业前端人员,该案例无 css 美化,引起不适...

基于野狗实时数据库搭建网页弹幕(下)

我们已经了解了野狗数据库的基本的数据操作,接下来我们来了解下我们另一个组Jquery.barrager.js!Jquery.barrager.js 是一款优雅的网页弹幕插件,支持显示图片,文字以及超链...

Katalon 所有关键字及其含义

以下为katalon所有关键字及其含义,具体可参考官方文档:序号关键字含义1Accept Alert接受当前弹窗(如确认对话框)。2Authenticate处理 HTTP 基础认证(输入用户名和密码)...

介jquery.validate.js简单实用的表单验证框架

最近在做用户登录、注册、以及用户中心...然后之前在慕课网学的jquery.validate用得着地方了,根据自己需求进行了细节修改,重要是样式方面吧。第一次发表这些,说得不好不要介意,开始吧。首先:...

编程技巧:Jquery实时验证,小数位补0,指定长度的「正小数」

在只能输入【正小数】的输入框获取到焦点时,移除千位分隔符,在输入数据时,实时校验输入内容是否正确,失去焦点后,添加千位分隔符格式化数字。同时小数位未满时末尾补0。HTML代码<input typ...

仅需三步,为Django admin增加登录验证码功能

首先,需要安装一个验证码的第三方库-django-simple-captcha,这是一个极其简单但可高度定制的 Django 第三方应用程序,用于将验证码图像添加到任何 Django 表单。安装dja...

发表评论    

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。