ウェブスクレイピングは、ウェブページからデータを抽出する技術です。
PythonのSeleniumライブラリを使用することで、ブラウザの操作を自動化し、ウェブページから必要な情報を効率的に取得することが可能になります。
この記事では、Seleniumを利用してGoogleのトップページを開き、「Murasan IT Lab」というキーワードで検索を実行する簡単なスクリプトを紹介します。
- Seleniumのインストール方法
- Seleniumで操作したいUIのclass属性の取得方法
- SeleniumでGoogleの自動検索を実行するためのPythonサンプルコード
Seleniumとは
Seleniumは、ウェブアプリケーションのテストを自動化するフレームワークで、Selenium WebDriverを使ってプログラムからブラウザを制御します。
多くのプログラム言語とブラウザに対応し、ウェブページの要素を操作やユーザーアクションのシミュレーションが可能です。また、ウェブスクレイピングにも利用され、ウェブページからデータを効率的に抽出する作業を支援します。
ライブラリのインストール
必要なライブラリをインストールするため、コマンドプロンプトで以下のコマンドを実行してください。
pip install selenium
Google検索のテキストボックスのclass属性を調べる
今回は、GoogleのWebページの中から、検索キーワードを入力テキストボックスを取得する方法としてclass属性を使用します。
このclass属性は、事前にGoogleのページを開発者ツールで開いて確認しておく必要があります。
開発者ツールを開く
Google検索のページを開き、画面上を右クリック→「検証」を選択することで開発者ツールを開きます。
検索キーワードを入力するテキストボックスのclass属性を調べる
検索キーワードを入力テキストボックスにマウスカーソルを写すと、以下のように要素の該当する個所の情報がグレーに変わります。
ここにテキストボックスに関する情報が表示されていますので、今回使用するclass=
の値をコピーしておきます。
作成したPythonコード
今回作成したサンプルコードは、PythonのSeleniumライブラリを使用して、Googleのトップページを開き、「Murasan IT Lab」というキーワードで検索を実行します。
検索後、検索結果画面が表示されるまで最大10秒間待機し、表示されたらさらに10秒間プログラムを一時停止してユーザーが検索結果を確認できるようにします。最後に、ブラウザを閉じてプログラムを終了します。
コード解説
- WebDriverのインスタンスの作成:
webdriver.Chrome
インスタンスを作成し、driver
変数に格納します。executable_path
引数でchromedriver
のパスを指定します。
- Googleのトップページを開く:
driver.get
メソッドでGoogleのトップページを開きます。
- 検索ボックスの取得:
driver.find_element
メソッドで、class
属性がgLFyf
のHTML要素(検索ボックス)を取得し、search_box
変数に格納します。
- 検索キーワードの入力:
search_box.send_keys
メソッドで検索キーワードMurasan IT Lab
を検索ボックスに入力します。
- Enterキーの送信:
- 再度
search_box.send_keys
メソッドを使用して、Enterキーを送信し、検索を実行します。
- 再度
- 検索結果画面の待機:
WebDriverWait
オブジェクトのuntil
メソッドを使用して、検索結果画面が表示されるまで最大10秒間待機します。expected_conditions.presence_of_element_located
メソッドで、id
属性がsearch
の要素(検索結果エリア)が存在することを確認します。
- 検索結果の確認のための待機:
time.sleep
メソッドでプログラムの実行を10秒間一時停止し、ユーザーが検索結果を確認できるようにします。
- ブラウザの終了:
finally
ブロック内でdriver.quit
メソッドを呼び出し、ブラウザを閉じます。これにより、エラーが発生しても必ずブラウザが閉じられるようにします。
作成した全体のソースコード
import time
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
# WebDriverのインスタンスを作成
driver = webdriver.Chrome()
try:
# Googleのトップページを開く
driver.get('https://www.google.com')
# 検索ボックスを見つける
search_box = driver.find_element(By.CLASS_NAME, 'gLFyf')
# 検索キーワードを入力
search_box.send_keys('Murasan IT Lab')
# Enterキーを送信して検索を実行
search_box.send_keys(Keys.RETURN)
# 検索結果画面が表示されるまで待機
WebDriverWait(driver, 10).until(
EC.presence_of_element_located((By.ID, 'search'))
)
# 10秒間待機してユーザーが検索結果を確認できるようにする
time.sleep(10)
finally:
# ブラウザを閉じる (エラーが発生しても必ず実行)
driver.quit()
実行結果
先ほど作成したPythonコードを実行すると、Seleniumによってブラウザが起動、検索実行され、以下のように検索結果ページを表示することができました。
まとめ
今回は、PythonとSeleniumを使用してGoogleでキーワード検索を実行する基本的なスクリプトを作成し、検索結果画面を表示して確認する方法を解説しました。
このスクリプトは、ウェブスクレイピングの基本を理解し、さらに複雑なスクリプトを作成する基盤となりますので、このコードを改良してさらに高機能なスクリプトを実装してみてください。
それでは、また次の記事でお会いしましょう。
コメント