我如何使用 Google 在 python 中的自定义图像生成唯一结果
How do i produce Unique result with Google's custom image in python
所以我使用 Google 的自定义搜索 api for python (3.6.6) 来搜索自定义图像,我一直在使用此代码:
from googleapiclient.discovery import build
import pprint
my_api_key = 'AIzaSyDouxn16TxJ8vym5AC1_A3nlMCzc5gpRjg'
my_cse_id = '007260579175343269764:pt3gyxmajmg'
def google_search(search_term, api_key, cse_id, **kwargs):
service = build("customsearch", "v1", developerKey=api_key)
res = service.cse().list(q=search_term, cx=cse_id, searchType="image", **kwargs).execute()
return res['items']
results = google_search(
'Mocha', my_api_key, my_cse_id)
pprint.pprint(results)
但这就是问题所在,它 return 每次我使用它的搜索结果都是一样的,它 return 是一样的结果。
我想问一下;我如何在每次使用代码时都获得 return 不同的搜索结果?
P.S。我希望代码在同一个搜索查询中给我一张不同的图片,比如当我使用 google 图片时,我搜索 Mocha
它显示了 different[=21= 的列表] 标题中有 Mocha 的图像,但此处的代码会搜索给定的查询,然后每次使用时都会选择第一个。所以我希望它 pick/show 我不一样。
再见,
你总是得到相同的输出,因为你总是询问 Mocha
的结果。当您在 Google 搜索栏
中输入相同的词时,也会发生同样的情况
如果您想要不同的输出,您必须更改您执行的查询。我的方法是依赖 random word generator 以便每次 运行 代码
时更改搜索
我在这里修改了您自己的代码片段来执行这个确切的工作:
from googleapiclient.discovery import build
import pprint
import requests
import random
my_api_key = 'AIzaSyDouxn16TxJ8vym5AC1_A3nlMCzc5gpRjg'
my_cse_id = '007260579175343269764:pt3gyxmajmg'
def google_search(search_term, api_key, cse_id, **kwargs):
service = build("customsearch", "v1", developerKey=api_key)
res = service.cse().list(q=search_term, cx=cse_id, searchType="image", **kwargs).execute()
return res['items']
def random_query():
word_site = "http://svnweb.freebsd.org/csrg/share/dict/words?view=co&content-type=text/plain"
response = requests.get(word_site)
WORDS = response.content.splitlines()
# print(WORDS)
number = random.randint(0, len(WORDS));
# print(number)
word = WORDS[random.randint(0, len(WORDS))].decode()
# print(word)
return word
def main():
results = google_search(
random_query(), my_api_key, my_cse_id)
pprint.pprint(results)
if __name__ == "__main__":
main()
在评论中澄清后编辑
为了使同一查询获得不同的结果,您可以从第一个页面以外的页面中选择结果。遵循的方法来自 this answer,您可以根据需要调整起始索引。在此代码段中,我们 select 页面选择 1 到 100 之间的随机数。请记住,每 10 个单位就有下一页,因此根据 "Second page has URL which contains start=10 parameter. Third page has URL which contains start=20" 之前给出的 link,等等
from googleapiclient.discovery import build
import pprint
import requests
import random
my_api_key = 'AIzaSyDouxn16TxJ8vym5AC1_A3nlMCzc5gpRjg'
my_cse_id = '007260579175343269764:pt3gyxmajmg'
def google_search(search_term, api_key, cse_id, start, **kwargs):
service = build("customsearch", "v1", developerKey=api_key)
res = service.cse().list(q=search_term, cx=cse_id, searchType="image", **kwargs, start=start).execute()
return res['items']
def random_start():
number = random.randint(1,101)
print(number)
return number
def main():
start_index = random_start()
results = google_search(
'Mocha', my_api_key, my_cse_id, start_index)
pprint.pprint(results)
if __name__ == "__main__":
main()
让我知道这是否是您正在寻找的答案,祝您有美好的一天!
所以我使用 Google 的自定义搜索 api for python (3.6.6) 来搜索自定义图像,我一直在使用此代码:
from googleapiclient.discovery import build
import pprint
my_api_key = 'AIzaSyDouxn16TxJ8vym5AC1_A3nlMCzc5gpRjg'
my_cse_id = '007260579175343269764:pt3gyxmajmg'
def google_search(search_term, api_key, cse_id, **kwargs):
service = build("customsearch", "v1", developerKey=api_key)
res = service.cse().list(q=search_term, cx=cse_id, searchType="image", **kwargs).execute()
return res['items']
results = google_search(
'Mocha', my_api_key, my_cse_id)
pprint.pprint(results)
但这就是问题所在,它 return 每次我使用它的搜索结果都是一样的,它 return 是一样的结果。 我想问一下;我如何在每次使用代码时都获得 return 不同的搜索结果?
P.S。我希望代码在同一个搜索查询中给我一张不同的图片,比如当我使用 google 图片时,我搜索 Mocha
它显示了 different[=21= 的列表] 标题中有 Mocha 的图像,但此处的代码会搜索给定的查询,然后每次使用时都会选择第一个。所以我希望它 pick/show 我不一样。
再见,
你总是得到相同的输出,因为你总是询问 Mocha
的结果。当您在 Google 搜索栏
如果您想要不同的输出,您必须更改您执行的查询。我的方法是依赖 random word generator 以便每次 运行 代码
时更改搜索我在这里修改了您自己的代码片段来执行这个确切的工作:
from googleapiclient.discovery import build
import pprint
import requests
import random
my_api_key = 'AIzaSyDouxn16TxJ8vym5AC1_A3nlMCzc5gpRjg'
my_cse_id = '007260579175343269764:pt3gyxmajmg'
def google_search(search_term, api_key, cse_id, **kwargs):
service = build("customsearch", "v1", developerKey=api_key)
res = service.cse().list(q=search_term, cx=cse_id, searchType="image", **kwargs).execute()
return res['items']
def random_query():
word_site = "http://svnweb.freebsd.org/csrg/share/dict/words?view=co&content-type=text/plain"
response = requests.get(word_site)
WORDS = response.content.splitlines()
# print(WORDS)
number = random.randint(0, len(WORDS));
# print(number)
word = WORDS[random.randint(0, len(WORDS))].decode()
# print(word)
return word
def main():
results = google_search(
random_query(), my_api_key, my_cse_id)
pprint.pprint(results)
if __name__ == "__main__":
main()
在评论中澄清后编辑
为了使同一查询获得不同的结果,您可以从第一个页面以外的页面中选择结果。遵循的方法来自 this answer,您可以根据需要调整起始索引。在此代码段中,我们 select 页面选择 1 到 100 之间的随机数。请记住,每 10 个单位就有下一页,因此根据 "Second page has URL which contains start=10 parameter. Third page has URL which contains start=20" 之前给出的 link,等等
from googleapiclient.discovery import build
import pprint
import requests
import random
my_api_key = 'AIzaSyDouxn16TxJ8vym5AC1_A3nlMCzc5gpRjg'
my_cse_id = '007260579175343269764:pt3gyxmajmg'
def google_search(search_term, api_key, cse_id, start, **kwargs):
service = build("customsearch", "v1", developerKey=api_key)
res = service.cse().list(q=search_term, cx=cse_id, searchType="image", **kwargs, start=start).execute()
return res['items']
def random_start():
number = random.randint(1,101)
print(number)
return number
def main():
start_index = random_start()
results = google_search(
'Mocha', my_api_key, my_cse_id, start_index)
pprint.pprint(results)
if __name__ == "__main__":
main()
让我知道这是否是您正在寻找的答案,祝您有美好的一天!