Yahoo 图片搜索的 API






4.86/5 (9投票s)
以编程方式从 Yahoo! 查询图像。

引言
在Google 图片搜索 API中,Ilan Assayag演示了如何以编程方式查询 Google 图片服务。他还提到Yahoo! SDK 也支持图像搜索。在本文中,我将介绍如何使用 .NET 访问 Yahoo 图片服务。
背景
Yahoo! 搜索 Web 服务 使开发人员能够以编程方式使用 Yahoo 搜索引擎执行搜索。 该 SDK 当前包括对 Perl、Python 和 PHP、Java、JavaScript 和 Flash 的支持。 但是,还有一个 .NET 开发人员中心,其中包括“操作方法”文章和下载。 我已将此信息浓缩为 .NET API,该 API 使用熟悉的请求 - 响应模式。
Using the Code
解决方案文件包含三个项目
YahooImageSetup
是一个安装项目,它为示例“Yahoo Image Search”Windows 窗体应用程序创建一个安装程序。 如果您只对搜索图像感兴趣,只需编译并运行安装应用程序。ImageGrabber
项目包含示例 Windows 窗体应用程序的代码。YahooAPI
是一个库项目,其中包含用于访问 Yahoo 图片服务的类。
这是一个基本库使用示例
using Com.WickedByte.YahooAPI;
YahooImageRequest request = new YahooImageRequest();
request.ApplicationId = "asdf1234";
request.Query = "Star Trek";
YahooImageResponse response = request.GetResponse();
ApplicationId
是您向 Yahoo! 注册为开发人员时获得的必需值。 它确定了调用 Yahoo! 搜索服务的应用程序的身份。 Query
是将被处理的特定搜索字符串。 GetResponse()
将查询序列化为 HTTP GET
,将其发送到 Yahoo!,然后反序列化结果。
可以在 YahooImageRequest
上设置许多属性来修改搜索结果。 我认为 IsAdultOk
属性的存在会使这个应用程序相当受欢迎。
YahooImageResponse
还包含许多有用的属性,其中最重要的是 Images
属性。 如果您遍历此属性,则可以使用每个 YahooImage
元素来检索 System.Drawing.Image
缩略图或全尺寸图像。 检索 Image
后,它会保留在 YahooImage
对象中缓存,因此重复调用 GetImage()
或 GetThumbnailImage()
不会导致 Web 下载多次。
foreach( YahooImage result in response.Images )
{
System.Drawing.Image thumb = result.GetThumbnailImage();
System.Drawing.Image image = result.GetImage();
//Do something with the downloaded images...
}
关注点
我没有介绍 .NET 包装器 API 中的大多数属性。 您可能需要浏览源代码以了解您可以使用什么。 示例 GUI 应用程序演示了如何使用许多可用属性。 GUI 也是多线程的,因此您可以双击缩略图结果以在其他搜索结果仍在返回时检索完整大小的版本。
如果您使用此代码开发自己的应用程序,请在Yahoo! 搜索 Web 服务开发人员中心申请应用程序 ID,并将 app.config 文件中的值替换为您自己的值。 玩得开心!
Marshall Rosenstein
WickedByte Software
历史
- 2007 年 12 月 18 日:初始版本
- 2011 年 7 月 9 日:项目已更新到 VS 2010 和 .NET 4