如何在python中使用Google的自定义图像生成唯一结果

问题描述 投票:0回答:1

所以我使用谷歌的自定义搜索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) 

但这是问题所在,它每次使用它都返回相同的搜索结果,它返回相同的结果。我想问一下;每次使用代码时如何让它返回不同的搜索结果?

附:我希望代码在同一个搜索查询中给我一个不同的图片,比如当我使用谷歌图片时,我搜索Mocha它向我展示了标题中有Mocha的不同图像列表,但这里的代码搜索给出的查询,然后选择第一个,每次使用它。所以我希望它选择/给我一个不同的。

python python-3.x image-manipulation google-custom-search
1个回答
0
投票

你好,

你总是得到相同的输出,因为你总是询问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,您可以根据需要调整起始索引。在这个片段中,我们选择一个介于1和100之间的随机数的页面。请记住,每10个单位你有下一页,所以根据“第二页有URL包含start = 10参数”之前给出的链接。第三页有包含start = 20“等的URL

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()

如果这是您正在寻找的答案并且度过美好的一天,请告诉我们!

© www.soinside.com 2019 - 2024. All rights reserved.