首页 文章

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

提问于
浏览
0

所以我使用谷歌的自定义搜索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 它显示了 Headers 中有Mocha的不同图像列表,但这里的代码搜索给出的查询,然后选择第一个,每次使用它 . 所以我想让它选择/给我一个不同的 .

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

    Edit after clarification in the comment

    为了使同一查询得到不同的结果,您可以从第一页以外的页面中选择结果 . 接下来的方法来自this answer,您可以根据需要调整起始索引 . 在这个片段中,我们选择一个页面,选择1到100之间的随机数 . 请记住,每10个单位你有下一页,所以根据"Second page has URL which contains start=10 parameter. Third page has URL which contains start=20"之前给出的链接等

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

    如果这是您正在寻找的答案,请告诉我,祝您有个美好的一天!

相关问题