获得超过 10 个结果 Google 自定义搜索 API
get more than 10 results Google custom search API
我正在尝试使用 Google 自定义搜索 API,我想做的是搜索前 20 个结果,我尝试更改 URL 中的 num=10
到 20 但给出 400 错误,我如何修复或请求结果的第二页?(注意我正在使用搜索整个网络)
这是我使用的代码
import requests,json
url="https://www.googleapis.com/customsearch/v1?q=SmartyKat+Catnip+Cat+Toys&cx=012572433248785697579%3A1mazi7ctlvm&num=10&fields=items(link%2Cpagemap%2Ctitle)&key={YOUR_API_KEY}"
res=requests.get(url)
di=json.loads(res.text)
遗憾的是,无法从 Google 自定义搜索 API 中收到超过 10 个结果。但是,如果您确实想要更多结果,可以通过将 start 参数增加 10 来进行多次调用。
看到这个link:https://developers.google.com/custom-search/v1/using_rest#query-params
接受的答案中的信息 是准确的。
下面是我写的 Python 函数,作为此答案第 4 步中函数的扩展 到 return 来自 [=30= 的最多 100 个结果] 搜索 API。对于每个 API 调用,它都会将 start 参数增加 10,从而自动将结果数处理为 return。例如,如果您请求 25 个结果,该函数将引发 3 API 次调用:10 个结果、10 个结果和 5 个结果。
背景资料:
有关如何设置 Google 自定义搜索引擎的说明:
有关如何指定它在此处搜索整个网络的更多详细信息:
from googleapiclient.discovery import build
from pprint import pprint as pp
import math
def google_search(search_term, api_key, cse_id, **kwargs):
service = build("customsearch", "v1", developerKey=api_key)
num_search_results = kwargs['num']
if num_search_results > 100:
raise NotImplementedError('Google Custom Search API supports max of 100 results')
elif num_search_results > 10:
kwargs['num'] = 10 # this cannot be > 10 in API call
calls_to_make = math.ceil(num_search_results / 10)
else:
calls_to_make = 1
kwargs['start'] = start_item = 1
items_to_return = []
while calls_to_make > 0:
res = service.cse().list(q=search_term, cx=cse_id, **kwargs).execute()
items_to_return.extend(res['items'])
calls_to_make -= 1
start_item += 10
kwargs['start'] = start_item
leftover = num_search_results - start_item + 1
if 0 < leftover < 10:
kwargs['num'] = leftover
return items_to_return
下面是您如何称呼它的示例:
NUM_RESULTS = 25
MY_SEARCH = 'why do cats chase their own tails'
MY_API_KEY = 'Google API key'
MY_CSE_ID = 'Custom Search Engine ID'
results = google_search(MY_SEARCH, MY_API_KEY, MY_CSE_ID, num=NUM_RESULTS)
for result in results:
pp(result)
我正在尝试使用 Google 自定义搜索 API,我想做的是搜索前 20 个结果,我尝试更改 URL 中的 num=10
到 20 但给出 400 错误,我如何修复或请求结果的第二页?(注意我正在使用搜索整个网络)
这是我使用的代码
import requests,json
url="https://www.googleapis.com/customsearch/v1?q=SmartyKat+Catnip+Cat+Toys&cx=012572433248785697579%3A1mazi7ctlvm&num=10&fields=items(link%2Cpagemap%2Ctitle)&key={YOUR_API_KEY}"
res=requests.get(url)
di=json.loads(res.text)
遗憾的是,无法从 Google 自定义搜索 API 中收到超过 10 个结果。但是,如果您确实想要更多结果,可以通过将 start 参数增加 10 来进行多次调用。
看到这个link:https://developers.google.com/custom-search/v1/using_rest#query-params
接受的答案中的信息
下面是我写的 Python 函数,作为此答案第 4 步中函数的扩展
背景资料:
有关如何设置 Google 自定义搜索引擎的说明:
有关如何指定它在此处搜索整个网络的更多详细信息:
from googleapiclient.discovery import build
from pprint import pprint as pp
import math
def google_search(search_term, api_key, cse_id, **kwargs):
service = build("customsearch", "v1", developerKey=api_key)
num_search_results = kwargs['num']
if num_search_results > 100:
raise NotImplementedError('Google Custom Search API supports max of 100 results')
elif num_search_results > 10:
kwargs['num'] = 10 # this cannot be > 10 in API call
calls_to_make = math.ceil(num_search_results / 10)
else:
calls_to_make = 1
kwargs['start'] = start_item = 1
items_to_return = []
while calls_to_make > 0:
res = service.cse().list(q=search_term, cx=cse_id, **kwargs).execute()
items_to_return.extend(res['items'])
calls_to_make -= 1
start_item += 10
kwargs['start'] = start_item
leftover = num_search_results - start_item + 1
if 0 < leftover < 10:
kwargs['num'] = leftover
return items_to_return
下面是您如何称呼它的示例:
NUM_RESULTS = 25
MY_SEARCH = 'why do cats chase their own tails'
MY_API_KEY = 'Google API key'
MY_CSE_ID = 'Custom Search Engine ID'
results = google_search(MY_SEARCH, MY_API_KEY, MY_CSE_ID, num=NUM_RESULTS)
for result in results:
pp(result)