我如何使用 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()


让我知道这是否是您正在寻找的答案,祝您有美好的一天!