Pygoogle pythonモジュールを使用したコードスニペットがあり、プログラムでgoogleのいくつかの用語を簡単に検索できます。
g = pygoogle(search_term)
g.pages = 1
results = g.get_urls()[0:10]
残念ながら、これは残念ながら廃止され、Googleカスタム検索と呼ばれるものに置き換えられました。 SOの他の関連する質問を見ましたが、使用できるものが見つかりませんでした。 2つの質問があります。
1)Googleカスタム検索を使用すると、上記の3行で行っていることを正確に実行できますか?
2)「はい」の場合-上記のことを正確に行うためのサンプルコードはどこにありますか?いいえの場合、pygoogleを使用して行ったことを行う代替手段は何ですか?
これを行うことは可能です。セットアップは非常に単純ではありませんが、最終的な結果は、数行のコードでpythonからWeb全体を検索できることです。
合計で3つの主要なステップがあります。
pygoogle のページの状態:
残念ながら、GoogleはSOAP APIの検索をサポートしなくなり、新しいライセンスキーも提供しません。一言で言えば、PyGoogleはこの時点でほとんど死んでいます。
代わりにAJAX APIを使用できます。サンプルコードについては、こちらをご覧ください: http://dcortesi.com/2008/05/28/google-ajax-search-api-example-python-code/
...しかし、実際にはAJAX APIも使用できません。 Google APIキーを取得する必要があります。 https://developers.google.com/api-client-library/python/guide/aaa_apikeys 簡単な実験的な使用のために、「サーバーキー」をお勧めします。
実際、古いAPIは使用できません。利用可能な最高の新しいAPIはカスタム検索です。特定のドメイン内での検索のみをサポートしているようですが、 this SO answer を実行すると、ウェブ全体を検索できます。
- Googleカスタム検索のホームページ( http://www.google.com/cse/ )から、[カスタム検索エンジンの作成]をクリックします。
- 検索エンジンの名前と説明を入力します。
- [検索エンジンの定義]の[検索するサイト]ボックスに、少なくとも1つの有効なURLを入力します(現時点では、この画面を抜けるにはwww.anyurl.comを入力してください。これについては後で説明します)。
- 目的のCSEエディションを選択し、利用規約に同意して、[次へ]をクリックします。必要なレイアウトオプションを選択し、[次へ]をクリックします。
- [次のステップ]セクションの下にあるリンクのいずれかをクリックして、コントロールパネルに移動します。
- 左側のメニューの[コントロールパネル]で、[基本]をクリックします。
- [検索設定]セクションで、[ウェブ全体を検索するが、含まれるサイトを強調する]を選択します。
- [変更を保存]をクリックします。
- 左側のメニューの[コントロールパネル]で、[サイト]をクリックします。
- 初期設定プロセス中に入力したサイトを削除します。
このアプローチはGoogleでも推奨されています: https://support.google.com/customsearch/answer/263104
pip install google-api-python-client
、詳細はこちら:
したがって、これを設定した後、いくつかの場所からコードサンプルをたどることができます。
簡単な例: https://github.com/google/google-api-python-client/blob/master/samples/customsearch/main.py
cse()
関数ドキュメント: https://google-api-client-libraries.appspot.com/documentation/customsearch/v1/python/latest/customsearch_v1.cse.html
そしてこれで終わる:
from googleapiclient.discovery import build
import pprint
my_api_key = "Google API key"
my_cse_id = "Custom Search Engine ID"
def google_search(search_term, api_key, cse_id, **kwargs):
service = build("customsearch", "v1", developerKey=api_key)
res = service.cse().list(q=search_term, cx=cse_id, **kwargs).execute()
return res['items']
results = google_search(
'stackoverflow site:en.wikipedia.org', my_api_key, my_cse_id, num=10)
for result in results:
pprint.pprint(result)
少し調整した後、スニペットとまったく同じように動作する関数を作成できますが、ここではこの手順をスキップします。