13

Google Pythonクライアントライブラリをプログラムで使用すると、Googleカスタム検索APIの検索エンジンでadvanced searchを実行すると、最初にnというリンクをいくつかの用語とパラメータに基づいて返すことができます。Googleカスタム検索APIを使用して詳細検索を行うにはどうすればよいですか?

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

、Googleの検索エンジンのAPIで行うとadvanced search方法の任意のアイデア?。

credentials

+0

あなたはどのようなエラーが出るのですか? –

+0

@EugeneLisitsky、私は何のエラーもありませんでした。問題は、googleのAPIを使用して[詳細検索](https://www.google.ca/advanced_search)を作成する方法がわかりません。例えば、私はどのようにして '英国 'の'英語の 'に'最高の犬の食べ物 'を含む' urls'をプログラムでGoogleに問い合わせることができますか? –

答えて

4

まずhereを説明するように、あなたのmy_cse_idは、GoogleのAPI custom search (cs) id、例えばと一致することを確認した後、カスタム検索を定義する必要があります。私の資格情報は、Googleのコンソールを見てどのようです

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を説明したように我々は、追加の検索パラメータを追加することができます

英語で「最高の犬の食べ物」のためのserchとサイトは英国から来る必要があります。


以下の変更コードが私に役立ちました。 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

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

その仕事は大変ですが、なぜ、複数の単語のクエリを渡すと、何も検索されませんでした。「valencia party」..? –

関連する問題