我使用visionmedia google search库来处理Ruby,但我找不到在搜索中选择结果数量的方法。我看一下将search.size
选项从:large
更改为:small
,但它似乎没有任何区别。如何将结果限制为仅五个URL。
require "google-search"
uris=[]
i=0
Google::Search::Web.new do |search|
i = i + 1
next if i == 6
search.query = "where is peru?"
search.size = :small
puts i
end.each_item { |item| uris << item.uri }
print uris
答案 0 :(得分:1)
此:
search = Google::Search::Web.new do |search|
search.query = "where is peru?"
search.size = :small
end
创建一个 lazy 可枚举对象,该对象仅在您对其进行枚举时检索搜索结果。因此:
search.first(5)
获取前五次搜索;而这:
uris = search.first(5).map(&:uri)
获取前五个uri。
将first(5)
更改为first(20)
,您会发现执行时间要长得多,这与枚举是一致的。
答案 1 :(得分:0)
一种方法是在google-search/lib/google-search/search/base.rb
def self.size_for sym
{ :small => 4,
:large => 8 }[sym]
end
您可以扩展此哈希以及您想要的任何自定义搜索大小。
或者,深入挖掘并查看是否可以将它们全部消除,并允许新的搜索选项接受search.size
的整数。