Ruby on rails 在使用Google';s的Web搜索API?

Ruby on rails 在使用Google';s的Web搜索API?,ruby-on-rails,database,image,google-search-api,Ruby On Rails,Database,Image,Google Search Api,我正在使用谷歌的自定义搜索API来动态提供web搜索结果。我非常仔细地搜索了API的文档,没有找到任何声明它允许您访问Google的站点图像预览,这些图像恰好存储为base64编码 我希望能够为谷歌web搜索API返回的每个URL的站点提供图像预览。请记住,我不希望这些图像是缩略图,而是大图像。我的问题是,从短期和长期来看,从效率和成本两方面来看,什么是实现这一目标的最佳方式 一个选择是抓取网络,自己生成并存储图像。然而,这远远超出了我的技术能力,而且存储所有这些图像的成本太高 另一种选择是在G

我正在使用谷歌的自定义搜索API来动态提供web搜索结果。我非常仔细地搜索了API的文档,没有找到任何声明它允许您访问Google的站点图像预览,这些图像恰好存储为base64编码

我希望能够为谷歌web搜索API返回的每个URL的站点提供图像预览。请记住,我不希望这些图像是缩略图,而是大图像。我的问题是,从短期和长期来看,从效率和成本两方面来看,什么是实现这一目标的最佳方式

一个选择是抓取网络,自己生成并存储图像。然而,这远远超出了我的技术能力,而且存储所有这些图像的成本太高

另一种选择是在Google的API返回搜索结果后立即动态获取图像。但是,在哪里/如何获取图像是另一个问题

有没有一种低成本的方式让我自己生成图像?或者,最好的解决方案是使用某种网站缩略图服务,为我做到这一点?这够快吗?会不会太贵?服务会为我提供正确尺寸的图像吗?如果没有,如何更改图像的大小


我非常感谢您提供全面的答案,并且对于任何使用rails的ruby代码示例,我都非常感谢。

因此,正如您在问题中指出的,我可以通过两种方法来解决您的问题:

  • 使用外部服务渲染和托管图像
  • 自己渲染和托管图像
  • 我不是这方面的专家,但到目前为止,我的谷歌搜索只返回了允许你生成缩略图的服务,而不是完整尺寸的屏幕截图(就像前面提到的几个)。如果有托管服务可以为您做到这一点,我很难找到它们

    那么剩下#2。为此,我的第一反应是寻找一个ruby库,该库可以从网页生成图像,这很快让我想到了(可能还有其他库,但这个库看起来干净简单)。有了这个库,您可以轻松地传入URL,它将使用webkit引擎为您生成页面的屏幕截图。从那里,我将使用文件附件gem或()将其保存到存储资产的任何位置(如)。将附件存储在一个字段中,该字段记录从WSAPI(Web搜索API)传递给IMGKit的原始URL,以便在后续搜索中与之进行比较,并使用缓存版本,而不是重新呈现预览。您还可以使用附件模型的
    created_at
    字段添加一些“如果超过x天,请刷新图像”类型逻辑。最后,我将使用类似()的东西将这些都放在后台作业中,这样用户在等待屏幕截图渲染时不会被阻止。将从WSAPI返回的URL数组传递给resque中的后台工作人员,这些工作人员将通过IMGKit生成图像——基本上是通过曲别针/carrierwave将图像保存到S3。所有这些项目都有很好的文档记录,Railscasts将带您了解resque和carrierwave gems的基本知识

    我还没有弄清楚这些数字,但是你可以反对自己托管这些图片,而不是任何其他外部的网页缩略图生成提供商。当然,自己动手可以让您完全控制图像的外观(质量、格式等),而我遇到的大多数服务都只提供一个小缩略图,因此有必要对此进行说明。如果您不缓存以前搜索的图像,那么您的成本将进一步降低,因为您将始终动态渲染图像。然而,我怀疑这将不能很好地扩展,因为您可能会为服务器电源(用于IMGKit和图像处理)和带宽(用于获取IMGKit源HTML的外部请求)支付更多的费用。我肯定会在你的项目中加入一些数字,以便为你处理的请求类型附上一些准确的数字,以帮助确定后续的成本


    不管是谁,这将是我的高级方法。我希望这能有所帮助。

    可靠地截屏网页是非常难做到的。主要问题是当前所有的解决方案(khtml2png、CutyCapt、Phantom.js等)都是基于QT的,QT提供了对嵌入式Webkit库的访问。然而,webkit构建非常古老,使用HTML5和CSS3,大多数效果要么不显示,要么呈现不正确

    我的一位同事使用了大部分(如果不是全部的话)当前技术为他的一个个人项目生成网页截图。他写了一篇信息丰富的文章,介绍了他现在如何使用SaaS解决方案,而不是自己维护解决方案


    TLDR版本;他现在用来做所有的缩略图和全尺寸截图。它不是免费的,但他说它能帮他完成任务。如果您不想使用,他们会列出竞争对手的名单。

    请查看,出于好奇,您的最终目标是什么?这些网站截图的用途是什么?您是否需要存储图像,或者可以动态渲染图像,异步返回(如电子邮件预览)。我想存储图像以进行缓存,但最初我需要动态渲染它们并异步返回它们可能更适合于此-不过您需要转换为图像。渲染对我们来说很好(javascript、canvas和所有…)很酷,谢谢!到目前为止,我正在做一些与你建议的非常相似的事情。我目前正在使用PhantomJS,一个带有JavaScriptAPI的Webkit引擎,在并行的Resque后台任务中生成图像。然而,它并不特别适合Rails,所以我肯定会研究IMGKit,看看我是否喜欢它