【Python】Seleniumで検索結果をスクレイピングしてCSV出力する

Python+Seleniumで検索結果をスクレイピングしてCSV出力する方法を紹介します。とりあえず動かしてみたい方は参考程度にどうぞ。

事前準備

Seleniumをインストール

WebDriverをダウンロードし、格納

以下の公式サイトからChromeのWebDriverをダウンロードします。

ダウンロードしたらZIPファイルを展開し、「chromedriver.exe」を適当な場所に格納します。

今回はCドライブ直角にdriverファルダを作成し、その配下に格納しました。

検索キーワードからGoogle検索結果をスクレイピングする

・searchGoogleResult.py

スクレイピングの各処理を解説

必要なモジュールをインポートします。

CSV出力とスリープのため「import csv」、「import time」を追加しています。

 

先ほど格納したドライバーを呼び出し、Chromeを立ち上げます。

 

inputから検索キーワードと取得ページ数を入力してもらいます。

 

「chrome.find_element_by_name(“q”)」からname属性がqの検索ボックスを指定し、取得したキーワードの検索を実行します。

 

先ほど入力した取得ページ数から検索キーワードの検索結果を格納していきます。今回は、検索結果のタイトルとURLを取得しています。

try・exceptで囲っているため、次ページがない場合は格納処理を終了します。

また、短時間で複数回アクセスするとDos攻撃として認識されることがあるため、sleepメソッドを使って5秒間スリープしています。

 

検索結果の取得終了後、CSV出力を実行します。

 

実行する際は、作成したファイル直下に移動し、以下のコマンドを叩きます(searchGoogleResult.pyの部分は作成したファイル名に置き換える)。

 

スクレイピングをHeadlessモードで実行する

ブラウザの画面を表示せずに実行する場合は、Headlessモードを有効にすることで実現できます。

 

 

追記:クラス化・関数化・機能追加しました。