Pythonでスクレイピング Google検索の自動化とタイトル、検索順位の抽出方法

Python

この記事では、Pythonのライブラリであるseleniumを用いて、Google検索の自動化を行い、タイトルと検索順位をCSVファイルにまとめる方法について解説していきます。

毎日の定型作業を自動化したい!

Pythonを勉強し始めた人の中には、Webスクレイピングをやってみたいと考える人もいると思います。

私もその1人で、Twitterの自動更新や、データ収集など毎日やらないといけないけど、実際にはそんな時間はない…毎日仕事もあるし、他にもやりたいことはたくさんある…

そんな悩みを解決してくれるのがWebスクレイピングです。

Seleniumとは?

Seleniumとはブラウザの動作を自動化するツール群です。

Webスクレイピングを行う際に利用されるライブラリの1つで、Webサイトにログインしたりスクロールした際に新しい情報が追加されるような、動作を伴うスクレイピングに用いられます。

もう1つ、BeautifulSoupというライブラリがありますが、そちらは対象とするwebサイトのurlがはっきりしている場合や、ログインなどの動作がないwebサイトでよく利用されます。

基本的にはBeautifulSoupを使って、動作が伴うスクレイピングについてはSeleniumを使うようにしています。

Seleniumのインストール

Sleniumを使ったことがない方は、お使いの環境にSeleniumを追加しましょう。

「pip install selenium」

です。

Chromedriverをダウンロードする

先ほどWebブラウザを操作するためにドライバーが必要だという話をしました。基本的にどんなブラウザでも可能ですが、このブログではWeb上に沢山情報があるGoogleChromeを用いて行っていきましょう。

というわけで、Chromedriverをダウンロードしていきます。

Versionの確認

ダウンロードの前に自身が使っているChromeのバージョンを確認しましょう。

確認には下の画像のように、GoogleChromeの左上の縦の点をクリックし、「ヘルプ」の中の「GoogleChromeについて」を選択します。

その後表示されたページに自分が使っているGoogleChromeのバージョンが確認できます。

確認が出来たらChromedriverをダウンロードしてきます。

ダウンロードはこちら「ChromeDriver-WebDriver for Chrome」

ダウンロードができたらZipファイルを解凍して、自動操作させたいPythonファイル(JupyterNotebookでも可)と同じファイルに配置します。

好きなキーワードを入力して検索結果を取り出す

配置ができたら準備完了です。

まずは最もシンプルな形として、キーワードを入れたら、CSVファイルを吐き出すようにしてみます。

中身を少し解説します。

インポートするライブラリは、seleniumtimeです。

timeのsleepは、処理を待ってもらうためのライブラリです。

スクレイピングでは、webサイトにアクセスして情報を入手することになりますが、機械的に処理をしてしまうと、1秒間に膨大な数のアクセスをしてしまい、サーバーへ負荷を掛けてしまいます。

また、何らかのエラーによって無限にアクセスを行ってしまう危険性を下げるために、次のループに移る前に1秒待つ処理を加えています。(30行目)

Googleの検索窓に対してキーワードを入れるコードが、23行目です。

21行目のsearch_barに対してsend.keys()を行うことで検索ワードを入力します。

検索を実行するにはsubmit()を行います。

また、今回のコードでは次のページのスクレイピングも行っています。

それが48行目以降のコードです。

ページ数を変数 i としており、今回のコードでは2ページ目で終了するようにしています。

取得した検索順位やタイトル、URLはリストに追加して、ループの最後にデータフレームとして出力します。

実行結果はこんな感じになります。

初めて実行した人は、急にブラウザが立ち上がって驚くかも知れません。

このように検索順位とタイトル、URLがCSVファイルに出力されています。

複数キーワードに対応させて、CSVファイルにまとめる

次は、複数のキーワードを一度に処理してみようと思います。

検索してほしいキーワードを「keywords.csv」にまとめておきます。

今回の例では、ヘッダーを付けず、キーワードたちを縦に加えていきます。

実行した結果がこちらです。

キーワードごとに検索結果が出力されていることがわかります。

まとめ

この記事ではSeleniumを用いて、Google検索の自動化を行いました。

皆さんもWebスクレイピングの第1歩を踏み出せたのではないでしょうか。

このブログでは、これからもPythonを使った自動化にトライしていきます。