Подтвердить что ты не робот

Как запросить расширенный поиск с API таможенного поиска google?

Как я могу программным образом использовать клиентскую библиотеку Google Python выполнять расширенный поиск с помощью поисковой системы API пользовательского поиска Google, чтобы вернуть список первых n ссылок, основанных на некоторых терминах и параметрах расширенного поиска, которые я запросил?.

Я попытался проверить документацию (я не нашел никакого примера), и этот ответить. Однако последний не работал, поскольку в настоящее время поддержка API AJAX не поддерживается. До сих пор я пробовал это:

from googleapiclient.discovery import build
import pprint

my_cse_id = "test"

def google_search(search_term, api_key, cse_id, **kwargs):
    service = build("customsearch", "v1",developerKey="<My developer key>")
    res = service.cse().list(q=search_term, cx=cse_id, **kwargs).execute()
    return res['items']

results = google_search('dogs', my_api_key, my_cse_id, num=10)

for result in results:
    pprint.pprint(result)

И это:

import pprint

from googleapiclient.discovery import build


def main():
  service = build("customsearch", "v1",developerKey="<My developer key>")

  res = service.cse().list(q='dogs').execute()
  pprint.pprint(res)

if __name__ == '__main__':
  main()

Таким образом, любая идея о том, как это сделать, и расширенный поиск с API поисковой системы Google. Вот как мои учетные данные выглядят на консоли Google:

учетные данные

4b9b3361

Ответ 1

Сначала вам нужно определить пользовательский поиск, как описано здесь, затем убедитесь, что ваш my_cse_id соответствует API Google пользовательский поиск (cs) id, например

cx='017576662512468239146:omuauf_lfve'

- поисковая система, которая ищет только домены, заканчивающиеся на .com.

Далее нам понадобится наш developerKey.

from googleapiclient.discovery import build
service = build("customsearch", "v1", developerKey=dev_key)

Теперь мы можем выполнить наш поиск.

res = service.cse().list(q=search_term, cx=my_cse_id).execute()

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

res = service.cse().list(q="the best dog food", cx=my_cse_id, cr="countryUK", lr="lang_en").execute()

ИСКАТЬ "Лучшая собачья еда" на английском языке, и сайт должен быть из Великобритании.


Для меня работал следующий модифицированный код. api_key был удален, так как он никогда не использовался.

from googleapiclient.discovery import build

my_cse_id = "012156694711735292392:rl7x1k3j0vy"
dev_key = "<Your developer key>"

def google_search(search_term, cse_id, **kwargs):
    service = build("customsearch", "v1", developerKey=dev_key)
    res = service.cse().list(q=search_term, cx=cse_id, **kwargs).execute()
    return res['items']

results = google_search('boxer dogs', my_cse_id, num=10, cr="countryCA", lr="lang_en")
for result in results:
    print(result.get('link'))

Выход

http://www.aboxerworld.com/whiteboxerfaqs.htm
http://boxerrescueontario.com/?section=available_dogs
http://www.aboxerworld.com/abouttheboxerbreed.htm
http://m.huffpost.com/ca/entry/10992754
http://rawboxers.com/aboutraw.shtml
http://www.tanoakboxers.com/
http://www.mondlichtboxers.com/
http://www.tanoakboxers.com/puppies/
http://www.landosboxers.com/dogs/puppies/puppies.htm
http://www.boxerrescuequebec.com/

Ответ 2

Это поздно, но, надеюсь, это помогает кому-то...

Для расширенного поиска используйте

response=service.cse().list(q="mysearchterm", 
cx="017576662512468239146:omuauf_lfve", ).execute()

Метод list() принимает больше аргументов, чтобы помочь продвинуть ваш поиск... проверьте args здесь: https://developers.google.com/custom-search/json-api/v1/reference/cse/list

Ответ 3

Альтернатива, использующая библиотеку запросов python, если вы не хотите использовать обнаружение google api:

import requests, pprint
q='italy'
api_key='AIzaSyCs.....................'

q = requests.get('https://content.googleapis.com/customsearch/v1', 
    params={ 'cx': '013027958806940070381:dazyknr8pvm', 'q': q, 'key': api_key} )
pprint.pprint(q.json())