使用:Rails 3.1.1
我正在使用googleajax gem在一个包含数千次搜索的脚本中执行Google搜索。
在大约20次搜索之后,我需要进行等待和重试的救援,因为看起来你连续执行的搜索量不会超过一定数量。大约一分钟后,重试使搜索继续进行10次搜索。结果是执行10次搜索大约需要一分钟,这使得脚本非常慢。
Google似乎可以阻止人们可以执行的搜索量(基于ip?基于googleajax推荐人?)但是有没有办法绕过它?
如果能够通过googleajax gem执行Google搜索而无需暂停等待,我该怎么办?我有哪些替代方案?
代码(切除了不重要的部分):
begin
puts "Searching with " + gsquery
results = GoogleAjax::Search.web(gsquery)[:results]
if results.count > 0
puts "#{results.count} results found for #{page.name}. Registering the connection!"
end
rescue
puts "Try again in 3 sec"
sleep 3
retry
rescue Timeout::Error
puts "Timeout Error, sleep 15 sec"
sleep 15
retry
end
答案 0 :(得分:2)
抱歉,但我觉得你运气不好。 GoogleAjax使用现在的deprecated网络搜索API(它已被弃用了一年多),这可能在将来的任何时候消失,使得宝石无用。其次,网络搜索API和它的替换都限制在每天最大查询数量,超过该数量服务将停止响应 - 对于自定义搜索API,它是100 queries a day。要获得超过你必须支付的费用(费率是5美元/ 1000次搜索)。速率限制基于与单个API密钥关联的查询数。
我建议你:
答案 1 :(得分:0)
我发现这个整洁的小宝石在我的最新项目中非常方便。 Ruby - Google Search API
以下是搜索图像的简单用例。 这基本上表明如果项目的名称不等于空字符串,则使用项目的名称返回前5个图像的搜索。如果项目的名称等于空字符串,因此为零,则不执行任何操作。
- if item.name != ""
- Google::Search::Image.new(:query => item.name).first(5).each do |image|
= image_tag(image.uri)