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

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

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:

полномочия

13
J.Do 8 Дек 2016 в 08:37

3 ответа

Лучший ответ

Сначала вам нужно определить пользовательский поиск, как описано здесь, а затем убедитесь, что ваш my_cse_id соответствует пользовательскому поиску Google API ( 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/
6
Maximilian Peters 17 Дек 2016 в 16:47

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

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

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

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

1
Martin 16 Мар 2017 в 20:30

Альтернативный вариант использования библиотеки запросов Python, если вы не хотите использовать API Google Discovery:

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())
2
shuckc 6 Май 2017 в 13:25