我正在开发一个搜索引擎,该引擎需要访问谷歌的结果。以下是我的选择:
- 使用自定义搜索API
- 使用代理使我的服务器发送搜索并返回数据
我对一些事情不确定:
自定义搜索API是否受限?我可能需要大量的查询,所以如果使用受到限制,那将是一个问题。
是否"授权"在节点中使用代理,将搜索查询发送到谷歌并截取结果显示给我的用户?如果我这样做,我会不会遇到一些限制?
这里的灵感来自gizoogle,它成功地插入了谷歌API(它们的结果与谷歌相同),但仍然不使用自定义搜索(自定义搜索显示增加了,这个网站上没有)。所以我认为他们有某种代理,但谷歌为什么让他们运行这些查询?
编辑:原来自定义搜索API也是有限的。那么,吉佐格尔是怎么做的呢?
好的,下面是我解决这个问题的方法:
事实证明,google有一个用于客户端ajax搜索的丢失的API(可能已弃用,请注意这一点)。看起来是这样的:
http://ajax.googleapis.com/ajax/services/search/web?v=1.0&q=test&rsz=large
只需访问该url即可查看结果。
所以基本上是这样的过程:
- 用户键入搜索
- 它通过ajax发送到您的服务器
- 服务器可能会根据您的应用程序修改搜索(过滤禁止的单词或其他内容)
- 您的服务器从谷歌轮询ajax web服务-不要忘记添加
get
参数userIp
,这是避免限制所必需的(谷歌限制来自每个用户的传入查询,因此您的服务器必须告诉谷歌它正在代表该userIp
发出请求 - 您将结果发送回客户端,然后使用javascript显示它们
唯一的缺点是必须用ajax进行搜索,这意味着页面在加载时是空的,稍后会被填充。但实际上,您可以使用URL中的get参数来预加载搜索并填充页面,然后再将其发送到客户端。
谷歌自定义搜索(GCS)有免费模式和付费("企业")模式。
这两种模式都受服务条款(自定义搜索服务条款)的监管-请务必仔细阅读。
据我所知,你可以使用免费模式,随心所欲地搜索。因为谷歌会返回结果,他们也会返回广告,所以他们可以通过这种方式获得报酬。
付费模式允许您访问API,让您关闭广告并做其他事情。但这是有代价的。
我一直在梳理文档和术语之类的东西——这真的不是谷歌的最大努力。但如果你完全按照他们描述的那样使用它,那真的很标准。
取决于您的项目规模和可用资金,但您可以获得GSAhttp://www.google.com/enterprise/search/products/gsa.html
Oz博士的网站使用它来索引和提取合作网站的结果,你也可以包括谷歌的结果。高度可定制的工作从源权重排名,过滤选项到自定义输出。