13

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

Я попытался проверить documentation (я не нашел никакого примера), и это answer. Однако последний не работал, поскольку в настоящее время поддержка 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() 

Таким образом, любое представление о том, как сделать и advanced search с поисковой API от Google ?. Это как мои полномочия смотреть на Google консоли:

credentials

+0

Какую ошибку вы получаете? –

+0

@EugeneLisitsky, у меня не было никаких ошибок. Проблема в том, что я не понимаю, как сделать [расширенный поиск] (https://www.google.ca/advanced_search) с API Google. Например, как я могу программным образом запросить у google все «urls», содержащие «лучшую собачью еду» на «английском» в 'UK'. –

ответ

4

Прежде всего, необходимо определить пользовательский поиск, как описано here, убедитесь, что ваш my_cse_id соответствует Google API custom search (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() 

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

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/ 
+0

Спасибо за помощь !. Тем не менее, мой вопрос заключался в создании [расширенного поиска] (https://www.google.ca/advanced_search) (т. Е. Сделать запрос Google с определенными фразами, словами, регионом, доменом, языком и т. Д.). Моя основная цель - программно выполнять расширенный поиск. –

+0

Кроме того, я не понимаю, почему ваш образец кода просто возвращает ссылки на CS-ссылки вместо ссылок на собаки. Не могли бы вы показать нам, как сделать расширенный поиск всех URL-адресов боксерских собак в Сиэтле на английском языке ?. –

+1

Спасибо за разъяснение! См. Обновленный ответ, боксерские собаки на английском, говорящем по-английски. –

1

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

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

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

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

2

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

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

Thanx его работа, но почему ничего не было получено, когда мы передаем запрос нескольких слов, например: «valencia party» ..? –

 Смежные вопросы

  • Нет связанных вопросов^_^