通过API以编程方式针对主要引擎运行搜索查询似乎非常困难。
- 谷歌没有用于搜索的通用API,显然和令人惊讶。他们有一个"自定义搜索引擎",旨在将Google驱动的搜索框添加到给定站点,并仅返回来自几个域的结果。他们的注册页面要求输入要搜索的网站。我尝试在这里输入".google.com/"和一些变体,但这并没有给我相同的结果(特别是当网络搜索给我结果时没有命中)我关心的一些晦涩术语。
- 必应搜索确实有一个 API,但 API 不会报告命中总数,这与它们的 Web 结果不同。获取结果总数是我的应用程序的一项要求。
- DuckDuckGo有一个API,但它似乎没有查询与网络搜索相同的数据库。
- Blekko 有一个 API,但它的速率限制为 1 个请求/秒。我还没有尝试过问他们的定价结构是什么。
- 我还没有尝试过雅虎。
请注意,我很高兴并愿意为此付费,但我仍然找不到服务。任何帮助,不胜感激。
blekko API 每秒最多免费 1 次查询。根据您正在做的事情,您可能会发现我们允许您做您在其他地方无法做的事情。有关一些详细信息,请参阅 http://help.blekko.com/index.php/advanced-search-features/。联系 apiauth@blekko.com 以获取 API 身份验证密钥和文档。
经过更多的研究和实验,我可以说:
- Yahoo Boss Search API 效果最好。对于一般的网络搜索,他们从第一次通话开始收取 0.80 美元/1000 次通话费用。API 返回 JSON,包括结果总数。它似乎具有与网站相同的覆盖范围,并且易于使用,但他们需要使用OAuth签名的请求(不需要令牌,只需签名);有一些示例 Ruby 代码可以解决问题,并且可以适应使用 OAuth gem。每个请求限制为最多 50 个结果,并带有分页标志,以使用单独的查询检索更多结果(每个查询都计费)。
- 一旦您通过设置屏幕(只需在要搜索的网站中填写 google.com),Google自定义搜索API就会有一个仪表板设置,允许切换"常规"网络搜索和自定义网站。API 还返回 JSON,只需要请求中的 API 密钥(没有令牌或签名),最多返回 10 个结果,但也返回结果总数。5000 次 API 调用收费 100 美元,在 100 次免费调用后。也许最令人沮丧的是,自定义搜索 API 似乎使用不同的数据库,并且在 Web 上没有返回相同的结果;许多在网络上获得点击的查询在 API 上显示为空白。
- 必应 API 真的不值得麻烦。我认为雅虎也在后端使用Bing,但雅虎界面更容易使用,更完整,文档更好。必应的API文档是可下载的Word文档(!!),尽管他们的搜索产品现在是Azure云的一部分。他们的网站导航是最晦涩的。
更新:Blekko的Greg Lindahl亲自回应了使用,并邀请我们开会。他们非常包容地分享他们的一些数据,还给了我们一个API密钥。这是另一个不错的选择,特别是对于专业数据集,就像我们的例子一样。