Как получить уникальный результат с пользовательским изображением Google в Python - PullRequest
0 голосов
/ 08 сентября 2018

поэтому я использую API пользовательского поиска Google для 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) 

но вот проблема, он возвращает тот же результат поиска каждый раз, когда я его использую, он возвращает тот же результат. Я бы хотел спросить; как заставить его возвращать разные результаты поиска каждый раз, когда я использую код?

P.S. Я хочу, чтобы код дал мне другое изображение в том же поисковом запросе, например, когда я использую изображения Google, я ищу Mocha, он показывает мне список разных изображений, в названии которых есть Мокко, но код здесь ищет данный запрос, а затем выбирает первый, каждый раз, когда он используется. так что я хочу, чтобы он выбрал / показал другой.

1 Ответ

0 голосов
/ 08 сентября 2018

Ciao,

вы получаете всегда один и тот же вывод, потому что вы всегда запрашиваете результаты для Mocha. То же самое происходит, когда вы вводите одно и то же слово в строку поиска Google

Если вы хотите иметь разные выходы, вы должны изменить запрос, который вы выполняете. Мой подход заключается в том, чтобы полагаться на генератор случайных слов , чтобы изменять поиск при каждом запуске кода

Здесь я изменил ваш собственный фрагмент кода для выполнения именно этой работы:

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


Редактировать после уточнения в комментарии

Чтобы получить разные результаты для одного и того же запроса, вы можете выбрать результаты со страницы, отличной от первой. Используемый подход основан на этом ответе , вы можете настроить начальный индекс так, как вам нравится В этом фрагменте мы выбираем страницу, выбирая случайное число от 1 до 100. Имейте в виду, что каждые 10 единиц у вас есть следующая страница, так как по ссылке, указанной перед "Вторая страница имеет URL, который содержит параметр start = 10. Третья страница имеет URL, который содержит 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()


Дайте мне знать, если это ответ, который вы ищете, и хорошего дня!

...