【问题标题】:How do I limit the number of results in ruby google-search?如何限制 ruby​​ google-search 中的结果数量?
【发布时间】:2014-03-02 09:54:34
【问题描述】:

我正在为 Ruby 使用 visionmedia google search 库,但我找不到在搜索中选择结果数量的方法。我看过将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

【问题讨论】:

    标签: ruby search google-search


    【解决方案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),你会发现执行起来要花更长的时间,这与枚举懒惰是一致的。

    【讨论】:

    • 完美运行。谢谢:)
    【解决方案2】:

    一种方法是在google-search/lib/google-search/search/base.rb 的第 183 行查看此方法

    def self.size_for sym
          { :small => 4,
            :large => 8 }[sym]
        end
    

    您可以扩展此哈希以及您想要的任何自定义搜索大小。

    或者,深入挖掘,看看您是否可以一起消除它并允许新的搜索选项接受 search.size 的整数。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-11-30
      • 2010-11-20
      • 1970-01-01
      • 2023-03-19
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多