見出し画像

【Python】Google検索結果をスクレイピングで自動取得する


PythonとCustom Search APIを使ってGoogle検索結果をスクレイピングで自動取得する方法について紹介します


事前準備


Custom Search APIを使ってGoogle検索結果をスクレイピングする方法は、以下のステップになります。


1. Google Cloud PlatformでCustom Search APIを有効化する。
2. APIキーを取得する。
3. PythonのプログラムにCustom Search APIを組み込む。
4. スクレイピングしたいキーワードを指定する。
5. プログラムを実行し、検索結果をスクレイピングする。


それでは、各ステップについて順番に解説していきます。


1. Google Cloud PlatformでCustom Search APIを有効化する。

Google Cloud Platformにアクセスし、左側のメニューから「APIとサービス」→「ライブラリ」を開きます。Google Custom Search APIを検索し、有効にします。

2. APIキーを取得する。

APIキーは、Custom Search APIの利用に必要なキーです。APIキーを取得するためには、Google Cloud Consoleにアクセスし、「APIとサービス」→「認証情報」を開きます。新しい認証情報を作成し、APIキーを取得します


参考記事:【GCP】GoogleCloudPlatformでプロジェクトを作成してAPI鍵の作成&有効化する


3. Python用のモジュールをインストール

Custom Search APIを使用するためには、Google API Clientライブラリをインストールする必要があります。以下のコマンドを使用して、Google API Clientライブラリをインストールします。


$ pip install google-api-python-client


4.カスタム検索エンジン(CSE)の作成と検索エンジンIDの取得


CUSTOM SEARCH APIを使用するためには他のAPIと違って、カスタム検索エンジン(CSE)の作成と検索エンジンIDの確認という手順が必要になります。


https://plus-pm.net/search-tracking-google-search-api/#toc21


Custom Search APIを使ってGoogle検索結果をスクレイピングするサンプルコード


GCPのAPI鍵と検索エンジンIDが取得出来たら次は実際に検索結果をPythonでスクレイピングしてみましょう

Custom Search APIを使ってGoogle検索結果をスクレイピングするサンプルコードは以下になります

<サンプルコード>

import os
from datetime import datetime
import json
from googleapiclient.discovery import build
import pprint

GOOGLE_API_KEY = '<取得したAPI鍵>'
CUSTOM_SEARCH_ENGINE_ID = '<取得した検索エンジンID>'
KEYWORD = 'プログラミング'


# Google Customサーチ結果を取得
s = build('customsearch',
          'v1',
          developerKey = GOOGLE_API_KEY)

r = s.cse().list(q = KEYWORD,
                 cx = CUSTOM_SEARCH_ENGINE_ID,
                 lr = 'lang_ja',
                 num = 10,
                 start = 1).execute()

pprint.pprint(r['items'])


サンプルコードの解説

このPythonスクリプトは、GoogleのCustom Search APIを利用して特定のキーワードに関する検索結果を取得し、表示するものです。以下に、スクリプトの主要な部分を詳しく解説します。

インポート

import os
from datetime import datetime
import json
from googleapiclient.discovery import build
import pprint
  • `os`: オペレーティングシステムとのやり取りを可能にするライブラリですが、このスクリプトでは使用されていません。

  • `datetime`: 日付や時間に関するデータを扱うためのモジュールですが、ここでも使用されていません。

  • `json`: JSONデータのエンコードやデコードを行うライブラリですが、このスクリプトでは直接的な使用はありません。

  • `googleapiclient.discovery`: Google APIクライアントライブラリの一部で、APIへの接続やリクエストを簡単に行うためのツールを提供します。

  • `pprint`: Pythonのデータ構造をより読みやすくプリントするためのユーティリティです。

APIキーと検索エンジンIDの設定

GOOGLE_API_KEY = '<取得したAPI鍵>'
CUSTOM_SEARCH_ENGINE_ID = '<取得した検索エンジンID>'
KEYWORD = 'プログラミング'
  • `GOOGLE_API_KEY`: Google APIを利用するために必要なAPI鍵です。この鍵はGoogle Cloud Platformから取得します。

  • `CUSTOM_SEARCH_ENGINE_ID`: Google Custom Search Engine (CSE) から取得したIDです。これは、特定の検索エンジンの設定や検索対象を識別するために使用されます。

  • `KEYWORD`: 検索したいキーワードを定義しています。

Google Custom Search APIの利用

s = build('customsearch', 'v1', developerKey = GOOGLE_API_KEY)
  • `build` 関数は、指定したAPI名(ここでは `customsearch`)とバージョン(ここでは `v1`)に基づいてAPIサービスオブジェクトを作成します。これにより、APIへのリクエストが可能になります。

検索リクエストの実行

r = s.cse().list(q = KEYWORD,
                 cx = CUSTOM_SEARCH_ENGINE_ID,
                 lr = 'lang_ja',
                 num = 10,
                 start = 1).execute()
  • `s.cse().list()`: Custom Search Engineを利用して、指定されたパラメータに基づく検索を行います。

    • `q`: 検索クエリ(ここでは `KEYWORD`)。

    • `cx`: 使用する検索エンジンのID。

    • `lr`: 検索結果の言語(ここでは日本語)。

    • `num`: 一度に返される検索結果の数(最大10件)。

    • `start`: 検索結果の開始位置(ここでは1から始まる)。

  • `.execute()`: 構築したリクエストを実際に実行し、結果を取得します。

検索結果の表示

pprint.pprint(r['items'])
  • 検索結果は `r` の辞書の `items` キーに格納されています。これには、検索にマッチしたウェブページのタイトル、URL、説明などが含まれています。

  • `pprint.pprint()`: 取得した検索結果を整形してコンソールに表示します。

このスクリプトを使用することで、指定したキーワードに対するGoogleの検索結果をプログラムを通じて簡単に取得し、その内容を確認することができます。これは情報収集やデータ分析など、さまざまな用途に利用可能です。

その他の細かい引数などについてはAPIをドキュメントを参考にしてみてください

APIドキュメント:https://developers.google.com/custom-search/v1/introduction


<おまけ>

# 検索リンクのみを抽出する
for d in r['items']:
    print(d['link'])


これでGoogleの検索結果が辞書型形式で取得できています。


終わり

以上が、Custom Search APIを使ってGoogle検索結果をスクレイピングする方法です。この方法を利用することで、Webサイトからのデータスクレイピングが容易になります。ただし、Googleの利用規約に従って利用することが必要です。例えば、Googleは自動的なスクレイピングを禁止していますので、注意して利用しましょう。


この記事が気に入ったらサポートをしてみませんか?