Как запросить расширенный поиск с 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:
учетные данные
Ответы
Ответ 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())