13

मैं कैसे प्रोग्राम के रूप में गूगल अजगर क्लाइंट लाइब्रेरी का उपयोग कर सकते हैं आदेश पहले n कुछ नियम और एक उन्नत खोज रहा पूछे के मापदंडों में आधारित लिंक की एक सूची प्रदान करने के लिए Google कस्टम खोज API का उपयोग खोज इंजन के साथ एक advanced search कर ?.कैसे गूगल customsearch एपीआई के साथ एक उन्नत खोज क्वेरी करने के लिए?

मैंने documentation (मुझे कोई उदाहरण नहीं मिला), और यह answer जांचने का प्रयास किया। हालांकि, बाद के काम नहीं किया था, वर्तमान में 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() 

इस प्रकार, और गूगल के खोज इंजन एपीआई के साथ कार्य करने का तरीका किसी भी विचार advanced search ?. अब तक मैं इस कोशिश की इस तरह अपनी उपलब्धियों को गूगल कंसोल पर नज़र डालें:

credentials

+0

आपने क्या त्रुटि मिलता है? –

+0

@EugeneLisitsky, मुझे कोई त्रुटि नहीं मिली। मुद्दा यह है कि मुझे समझ में नहीं आता कि Google के एपीआई के साथ [उन्नत खोज] (https://www.google.ca/advanced_search) कैसे बनाना है। उदाहरण के लिए, मैं 'यूके' में 'अंग्रेजी' में 'सर्वश्रेष्ठ कुत्ते के भोजन' वाले सभी 'यूआरएलएस' के साथ प्रोग्रामेटिक रूप से क्वेरी कैसे कर सकता हूं। –

उत्तर

4

सबसे पहले आप के रूप में वर्णित here एक कस्टम खोज परिभाषित करने की जरूरत है, तो सुनिश्चित करें कि आपके my_cse_id गूगल एपीआई 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

इसके अलावा, मुझे समझ में नहीं आता है कि आपका कोड नमूना सिर्फ कुत्तों के लिंक के बजाय सीएस व्याख्यान लिंक क्यों लौटाता है। क्या आप हमें दिखा सकते हैं कि अंग्रेजी भाषा में सिएटल में बॉक्सर कुत्तों के सभी यूआरएल की उन्नत खोज कैसे करें? स्पष्टीकरण के लिए –

+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

अजगर अनुरोध लाइब्रेरी का उपयोग कर आप गूगल खोज एपीआई का उपयोग नहीं करना चाहते हैं, तो एक विकल्प:

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

थैंक्स इसका काम है, लेकिन जब हम कई शब्दों की क्वेरी पास करते हैं, तो कुछ भी क्यों नहीं लिया जाता है, जैसे: "वेलेंसिया पार्टी" ..? –

संबंधित मुद्दे