0

我正在使用来自 Google 的用于 Ruby 的自定义搜索引擎的 API。这就是我在调用后设置 API 的方式Google::APIClient.new

response = client.execute(
        :api_method => search.cse.list,
        :application_name => 'my_app',
        :application_version => '0.1',
        :parameters => {
            'q' => thekey,
            'num' => 4,
            'start' => 1,
            'key' => 'MYKEY',
            'cx' => 'MYCX'
        }
    )

请求消失了,但我无法访问下一页的结果。如果我运行client.execute(response.next_page)获取第一个 API 调用的相同数据。

response.next_page

返回这个:

irb(main):015:0> response.next_page => #"ordine dei geometri", "num"=>4, "start"=>1, "key"=>"MYKEY", "cx"=>" MYCX", "pageToken"=>nil}, @headers={"User-Agent"=>"google-api-ruby-client/0.7.1 Mac OS X/10.9.4\n (gzip)", "接受-Encoding"=>"gzip", "Content-Type"=>""}, @api_method=#, @authenticated=nil, @authorization=nil, @body

您会看到该start参数设置为1即使第一个response返回

"queries"=>{"nextPage"=>['start' => 5}

反而:

response.next_page_token

是永远nil

我试图搜索(这对我不起作用)但是关于 Google API Ruby 客户端的文档很奇怪。

4

2 回答 2

1

这是我通过 Google API 调用进行分页的模板:

page_token = nil
begin
  parameters = {}
  parameters['domain'] = "mydomain.org"
  if page_token.to_s != ''
    parameters['pageToken'] = page_token
  end

  result = $client.execute(
    :api_method => api.groups.list,
    :parameters => parameters)

  if result.status == 200
    groups = result.data
    groups_array.concat(groups.groups)
    page_token = groups.next_page_token
  else
    page_token = nil
  end
end while page_token.to_s != ''

在此示例中,我正在检索特定域的所有组。

于 2014-09-14T13:26:51.183 回答
0

好的,前几天我在 google-api-ruby-client 的 github repo 上打开了一个问题,这是最终的答案:

自定义搜索以非标准(相对于其他 Google API)方式来表示下一页。next_page期望在响应中找到一个属性next_page_token并将其合并到上一个查询中。由于该值不存在,它只是重新执行上一个查询。

对于自定义搜索,您需要通过查看queries.

所以,万一没有它:)

于 2014-09-22T17:06:25.520 回答