Google自定义搜索引擎[通俗易懂]

Google自定义搜索引擎[通俗易懂]本文主要介绍如何通过Google的API来定义自己的搜索引擎,并将Google搜索框嵌入到自己的web页面。另外,分析了自定义搜索引擎请求数据的url,模拟请求并获取搜索的结果。1写在前面前段时

大家好,又见面了,我是你们的朋友全栈君。

本文主要介绍如何通过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/,页面如下。

2016_11_54c3857e-9321-46c6-b9cb-97af2811288a

3)点击右侧的【新增搜索引擎】,填写你搜搜引擎的基本配置。页面如下。

2016_11_1902b40f-2f7b-4c01-9843-31d69d62ee2c

我可以看到,只需要配置三项即可完成自定义搜索引擎。

  • 第一个是你需要搜索的网站,也就是说你自定义的这个搜索引擎只会在你填写的单个网页、整个网站或者整个域中去搜索你要想要的信息。在这里我们以百度网盘资源为例,填写www.pan.baidu.com
  • 第二个是语言,这个我们选择所有语言。
  • 最后一个是搜索引擎的名称,我们就填写【百度云盘搜索】

2016_11_0ddb85a9-a685-44c0-ada9-894d2a1956f4

4)点击创建,就实现了自己的搜索引擎,点击右侧的【修改搜索引擎】的页面,如下图。

2016_11_0af0e1db-a81b-41c7-ad7e-6a31258da3f8

在修改搜索引擎的页面中有一个【搜索引擎ID】,这个特别关键,你可以点击它,查看你这个搜索引擎的id编码,还可以公开你这个搜索引擎的网址。还有一个很重要的就是【获取代码】,获取这段代码就能够实现将自定义的搜索引擎框嵌入到你自己定义的web页面中,点击【获取代码】。能够获取到一段html代码,如下:

2016_11_9727487f-d4f5-4103-8660-7a806ed1eae0

另外,在上面步骤4)的截图1中,可以测试一下,你自定义的搜索引擎。在这里,我们输入【数学】关键字,结果如下。

2016_11_038e91f6-865f-477c-94fc-65e9d83284a0

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替换到这里即可。下面是页面效果。
2016_11_c3fb77e4-4736-4092-99f6-b948590e3520

这下就实现了将自定义搜索引擎嵌入到自己的web页面。

3.2 模拟请求

通过分析,搜索引擎搜索请求的url为:

https://www.proxy.ustclug.org/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数据包含了搜索结果以及附带属性(搜索结果总数等)。如下图所示。

2016_11_dd51d22f-7770-4502-b330-1b17bcc1355b

明白了引擎请求搜索结果的这一流程,那么用c#语言来实现就非常简单了。代码非常简单,就不贴出来。

4 总结

使用google的api自定义搜索引擎最最关键的一点就是,你的机器要能够访问google。要是不能访问google,那就只能/(ㄒoㄒ)/~~。本文举的例子是搜索百度网盘资源,当然你也可以搜索博客园的所有资源。

其实,google自定义搜索引擎api还有更加精彩设置,你可以去玩玩。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/154436.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • android点滴之标准SD卡状态变化事件广播接收者的注冊「建议收藏」

    android点滴之标准SD卡状态变化事件广播接收者的注冊

    2022年2月3日
    40
  • #利用DialogResult属性实现主程序的打开当前窗口的关闭

    #利用DialogResult属性实现主程序的打开当前窗口的关闭利用DialogResult属性实现主程序的打开当前窗口的关闭首先介绍一下非模式化窗体show()和模式化窗体showdialog()的概念:两种方法都能打开显示窗体,1.非模式化窗体show()建立新窗口后仍能对原窗口进行操作,比如点击frm窗口上的“登录”按钮,会弹出FrmMain窗口,弹出后仍能对原窗口frm进行操作(移动,点击登录按钮等操作)2.模式化窗体showdialog()建…

    2022年6月22日
    27
  • flex vue 垂直居中居上_推荐几种在移动端实现垂直居中的方法[通俗易懂]

    flex vue 垂直居中居上_推荐几种在移动端实现垂直居中的方法[通俗易懂]推荐几种在移动端实现垂直居中的方法。方法1:table-cellhtml结构垂直居中CSS.box1{display:table-cell;vertical-align:middle;text-align:center;}方法2:display:flex.box2{display:flex;justify-content:center;align-items:Center;}123…

    2022年5月13日
    36
  • angular debounce throttle「建议收藏」

    angular debounce throttle「建议收藏」throttle我们这里说的throttle就是函数节流的意思。再说的通俗一点就是函数调用的频度控制器,是连续执行时间间隔控制。主要应用的场景比如:鼠标移动,mousemove事件DOM元素动态定位,window对象的resize和scroll事件有人形象的把上面说的事件形象的比喻成机关枪的扫射,throttle就是机关枪的扳机,你不放扳机,它就一直扫射。我们

    2022年6月20日
    47
  • [弗曼学习法] Study for learning methods

    [弗曼学习法] Study for learning methods第一步 -选择一个你想要理解的概念    选择一个你想要理解的概念, 然后拿出一张白纸, 把这个概念写在白纸的最上边.第二步-设想一种场景,你正要向别人传授这个概念    在白纸上写下你对这个概念的解释, 就好像你正在教导一位新接触这个概念的学生一样. 当你这样做的时候, 你会更清楚地意识到关于这个概念你理解了多少, 以及是否还存在理解不清的地方.第三步-如果你感觉卡壳了…

    2022年6月12日
    45
  • sftp上传本地文件_sftp连接超时原因

    sftp上传本地文件_sftp连接超时原因关键:(1)sftp的测试指令:sftp-oPort=2125meituan@220.248.104.170(2)让上海那边自己试了一下,也不行,他们自己重置了一下sftp的密码,我们可以登录了;上海那边反应,在10月10号早上,大量重复数据发送到上海政府端,查询后发现在:dx-qcs-regulation-shanghai06这个主机有问题:里面有大量的…

    2025年11月14日
    4

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号