Google API的查询方式详解

Google应用程序的核心功能就是查询。没有查询,也就没有Google数据;没有Google数据,你还要什么Google应用程序?鉴于这个核心功能的重要性,下面我们花点时间来剖析几个典型的查询。

查询的基本要素
这是一个典型的基于Perl的Google API应用程序,它一般用如下方式向Google发送查询命令:

my  $results=$google_search ->

  doGoogleSearch(

     key, query, start, maxResults,

     filter, restrict, safeSearch, lr,

     ie, oe

);

通常,圆括号内的参数是变量、数字或布尔值(真或假)。在上例中,我使用了参数自身的名称,而不是其具体赋值,以下是参数的相应定义:

key

这个地方应输入你的Google API开发者密钥。不提供密钥的话,此查询脚本就不能完成搜索任务。

query

这是你的查询条件,由关键词、短语和专用语法组成。

start

也就是偏移量,当决定返回哪10个结果时,这个整数值用于指定从哪个结果开始计数。如果此值为16,那么Google API就会返回序号在16~25之间的结果。如果此值为300,那么Google API就会返回序号在300~309之间的结果(当然,这里有个假设条件,你的查询能匹配足够多的结果)。我们把从0而不是从1开始的计数方式称为零下标。第一个结果的编号为0,然后是999、998。无可否认,这多少有点别扭,但你很快就会习惯——特别是在你继续做一些编程之后。这个参数的取值范围是0~999,因为对于每一个查询Google最多只返回1000条结果。 字串3

maxResults

这个整数用于指定API返回的结果数。API批量返回搜索结果,其上限是10,因此,其取值范围是1~10。

filter

你可能会认为filter选项是用于成人内容的SafeSearch过滤器。不是。这是一个布尔值(真或假),用于指定要不要对你的结果做自动查询过滤,删去相近内容(标题与片断内容十分相近的内容)与来自同一主机或 站点的多次结果。如果启用了过滤选项,返回的结果集中只会包含来自同一主机或站点的头两个结果。

restrict

注意,restrict跟SafeSearch毫无关系。它允许你将搜索限制在Google主题搜索中或某个 特别国家。Google有4个主题限制:美国政府(unclesam)、Linux(linux)、Macintosh(mac)与FreeBSD(bsd)。你可以在Google Web API 文档中 找到一个完整的国家列表。如果不想限制你的搜索,将这个选项设为空白即可(一般用空的双引号""表示)。

safeSearch

这才是SafeSearch过滤选项。这个布尔值(真或假)用于指定是否对返回的结果进行问题内容过滤。

lr

次参数用于语言限制,但用它得有点技巧。Google在其API文档中提供了一份可用于限制搜索结果的语言列表。当然,你也可以简单地将此选项设为空白以示不对语言做任何限制。 字串5

限制语言的方法有好多种。第一种方法是包含某种语言编码。举例来说,如果想将搜索结果限制于英语,那么你可以使用lang_en。限制语言可以有多种,只须用|符号(管道符)将几种语言编码分开,|的含义是OR(或)。像lang_en | lang_de就表示搜索结果仅限于“英语或德语”。

可以用前缀-(减号)表示排除某种语言的搜索结果。如-lang_en,这表示返回除英语之外的所有结果。

ie

此参数的含义是“输入编码”,用于指定传递给API的查询条件所用的字符编码方式。Google的文档上说,“ 客户程序的请求数据应使用UTF-8编码,API返回的数据也将以UTF-8编码”。在首次Google API迭代方案中,Google API文档曾提供过一个编码选项表(latinl、cyrillic,等等),但目前的所有编码方式均为UTF-8。实际上,Google会简单地忽略所有非UTF-8编码的查询内容。

oe

此参数的含义是输出编码。与输入编码相同,所有编码方式均为UTF-8。

一个示例
说了这么多,一个真实的查询看起来会是什么样子呢?

下面这个例子将变量传递给key与query参数,请求10个结果,并从第100个结果开始计数(实际上就是第101个结果),指定重复过滤,并启用SafeSearch。这个查询用Perl可以写成这样:

字串6




注意,密钥与查询条件可以很方便地使用以双引号引起来的字符串作为参数传入:



如果想对语言和主题做限制的话,事情会稍微麻烦一点,核心的查询条件基本没变,只是个别选项的值变了。

加入国家、主题等多重限制
在有的情况下要求将搜索结果限定在特定国家的特定语言内,或者限定在特定语言、特定国家并且特定主题内。这就使得事情变得复杂起来了。

注意下面几条规定:

—   使用前缀 -(减号)排除相关条件。

—   使用 .(英文句号)分隔限制条件——不能使用空格。

—   用 |(管道符)表达两个限制条件之间的或(OR)关系。

—   使用圆括号对限制条件进行分组。

假设有这么一个查询,其返回结果的语言是法语,搜索范围划定在加拿大的站点,主题限定在Linux。这个查询可以写成这样:
字串7

对于来自加拿大或法国的搜索结果,则应如此:


如果想把结果限定在法语,但不想要来自法国的结果,那么可以这样:


想了解更多的限制,参阅第二章第四节APIs_Reference.html的“限制”内容,它是Google API文档的一部分。

启用各种查询元素
用户可以像下面这样使用不同的查询元素:

使用SafeSearch

如果你构建的程序是给亲友使用,必然会想到启用SafeSearch。但你其实还可以使用它来比较安全与不安全的结果。本书中Google技巧“SafeSearch 验证URL”[Hack #24]就是这么做的。你可以构建一个程序读入Web表单的关键词,并比较过滤前后的结果计数,这样,就可以为这个关键词提供一个基于结果计数的安全等级了。

设定结果数目

无论请求1个结果还是10个结果,你总得使用自己的开发者密钥,并且受到每天最多执行1000个Google Web API查询的硬性限制。那么,非得查询10个结果吗?当然不一定;如果只需要第一个结果——让浏览器跳转到另一个页面,为一个密码生成随机查询字符串,或者其他什么情况——那你还不如不去请求刚才准备丢弃或忽略的结果,这样可以最大限度地提高程序的运行速度。
字串1


搜索不同的主题

通过Google API可以对4个不同的专题进行搜索,再加上几十种不同的语言,还有几十个国家,就存在上千种主题/语言/国家限定条件的选择机会。

考虑一个开放源代码的国家应用程序。你可以建立一个专用于开放源代码的关键词列表(如linux、perl等),再创建一个程序,在限定的开发源代码主题(如linux)与特定国家范围内执行一系列的查询操作。这样,你就可以发现perl在法国的linux主题中被提及15次,在德国被提及20次,等等。

另外,你还可以将固化在程序中的变量尽量提取到界面上来,提高其赋值的灵活性。在表单中提供一个下拉列表框,让用户方便地选择搜索条件中的国家限制。用大洲的限制取代国家的限制怎么样?用户在界面上选定的参数可以通过变量传递给程序。在界面上提供一个下拉列表框用于国家与语言的设定怎么样?或者针对每个国家指定一个结果数?

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/15190102/viewspace-429757/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/15190102/viewspace-429757/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值