Python

【入門】Selenium×Pythonの使い方!Chromeブラウザを自動操作してみようー!

Selenium
ウマたん
ウマたん
当サイト【スタビジ】の本記事では、SeleniumをPythonで動かしてChromeブラウザ上で行う操作を自動化していきます。非常に簡単なコードを記述するだけで操作できるのでぜひ試してみてください!Seleniumを駆使すれば普段の単純労働が全自動になるかもしれませんよ!

こんにちは!

消費財メーカーでデジタルマーケター・データサイエンティストを経験後、現在は独立して働いているウマたん(@statistics1012)です!

Pythonを使うと非常に色々なことが出来ちゃいます。

その中でもSeleniumを使ったブラウザの自動化は非常に便利。

普段なんとなーく惰性でやっているルーティンワークはもしかしたらSeleniumを使えばぜーんぶ自動化できてしまうかもしれません。

ロボたん
ロボたん
え・・・Pythonで自動化まで出来ちゃうの!?
ウマたん
ウマたん
Pythonはできることが非常に多いからちょっとずつ覚えていこうね!

ぜひSeleniumの威力を知って色々な場面で使ってみましょう!

Seleniumとは

pc python

Seleniumはブラウザを操作するためのオートメーションツールです。

この記事では、Pythonを用いて実装していきますが、JavaやRubyなど他のプログラミング言語でも実装することが可能。

Seleniumを使うことでWeb上で行う行動を自動化することができます。

検索やクリック、情報の抽出や画面キャプチャを撮って保存することなどが出来てしまうのです。

ぜひSeleniumを使いこなして普段使っている作業を自動化してみましょう!

Selenium×Pythonでいくつか挙動を試してみよう!

python

それでは、そんなSeleniumについていくつか簡単な実装をおこなっていきたいと思います。

この記事では、先ほど取り上げた4つ

・検索
・クリック
・情報取得
・画面キャプチャ

を自動化してみたいと思います。

前準備(Windowsの場合)

意外とつまづきやすいのが、この前準備。

Seleniumを使ってブラウザを操作するためには専用のドライバーをダウンロードしなくてはいけません。(Windowsの場合)

今回はChromeブラウザを使用するので、Chromeを動かすためのChrome Driverをインストールしていくのですがご自身が使っているChromeのバージョンとダウンロードするChrome Driverのバージョンが一致するようにしましょう!

ここが一致しないと上手く動作しません。

Chrome Driverは以下のページからダウンロードしてください。

自分が使っているChromeブラウザのバージョンはブラウザ右上の3点リーダーメニューから以下のように確認することができます。

Google Driver Google Driver

この場合使っているChromeブラウザのバージョンは84なので、Chrome Driverのバージョンも84を選ぶようにしましょう!

Google Driver

ダウンロードしたChrome Driverは任意のディレクトリフォルダに格納しておきましょう。

以下のコードでChomeブラウザを動かす準備が完了!

from selenium import webdriver
import time

driver = webdriver.Chrome(executable_path='Chrome Driverの格納パス')

前準備(Mac)の場合

Macの方が簡易的に実装することが可能です。

Macの場合はChromedriverをインストールせず以下のようにターミナルに打つだけで実装することが可能です。

ターミナルにて

brew cask install chromedriver

と入力してください。

既にchromedriverが入っていて再度インストールしたい場合は

brew cask reinstall chromedriver

としましょう。

そして以下のようにしてあげれば問題ないです。

from selenium import webdriver
import time

driver = webdriver.Chrome()

Googleで検索をしてみよう!

それでは準備が整ったところでGoogle検索をおこなってみましょう!

以下の公式HPに載っているSample testのコードを実行するとGoogle検索ができますよ!

#Googleのブラウザを開く
driver.get('https://www.google.com/')
time.sleep(2)

#スタビジを検索
search_box = driver.find_element_by_name('q')
search_box.send_keys('スタビジ')
search_box.submit()
time.sleep(2)

これで、Googleでスタビジと検索してくれます。

ロボたん
ロボたん
わー!感動!

検索結果をクリックしてみよう!

続いて検索結果をクリックしてみましょう!

ここでは、検索結果の1位をクリックしてみましょう!

#検索結果1位をクリック
g = driver.find_elements_by_class_name("g")[0]
r = g.find_element_by_class_name("r")
r.click()

find_elements_by_class_name(‘g’)で、クラスが’g’の要素を引っ張ってきています。

引っ張ってきた要素の中の1つ目の要素のさらにrクラスにアクセスしています。

そしてr.click()で実際にクリックアクションを実行することができるんです!

要素を指定する上では、HTMLの要素を把握することが必要です。

Chromeでは、Ctrl+Shift+Iでディベロッパーツールを開くことができ、ディベロッパーツールのElementsから各要素を確認することができます。

ディベロッパーツール
マーケター必読!ディベロッパーツールの使い方!こんにちは! 消費財メーカーでデジタルマーケティングに携わるウマたん(@statistics1012)です。 みなさんは、C...

Webサイト上の情報を取得してみよう!

続いてサイトの情報を取得してみましょう!

これは先ほどのクリック時におこなった方法で要素を指定して抽出していきます。

Web上の情報を取得する行為はWebスクレイピングと呼ばれ、非常に汎用性が高く色々なところで利用されていますが、サイトやサービスによっては規制されていることも多いので注意しましょう!

#h2の要素を取得
for h2 in driver.find_elements_by_tag_name("h2"):
    print(h2.text)

ここでは、簡易的にH2のタグ要素を全て取得しました。

新着記事
データサイエンス
Python
おすすめサイト
Webマーケティング

スタビジでは、いくつかのカテゴリをトップページに並べており、それらが取得できましたね!

画面をスクリーンショットでキャプチャしてみよう!

最後に画面をスクリーンショットで保存する方法を紹介しておきます。

#画面キャプチャ
driver.maximize_window()
driver.save_screenshot('スタビジ.png')

#ブラウザを閉じる
driver.quit()

driver_maximize_window()で画面を最大化します。

そしてdriver.save_screenshot(‘○○.png’)でpng形式で画像を保存することができます。

この場合は、Pythonファイルと同ディレクトリに保存されますが、保存場所を明示的に示せばそこに保存することができます。

最後に全てのコードを1つにまとめて置いておきます。

Seleniumを勉強する方法

Working late

SeleniumはUdemyのコースが非常に優良で分かりやすいので是非チェックしてみてください。

Seleniumを動かすところからある程度の実装までであれば、この動画を見れば問題ないです。

PythonによるWebスクレイピング〜入門編〜【業務効率化への第一歩】

Udemy コース Webスクレイピング
【オススメ度】
【講師】キカガクの執行役員。機械学習や統計を大学専攻
【時間】2.5時間
【レベル】初級

キカガクの執行役員で学生時代に機械学習や統計を専攻していた方が講師です。

若い先生ですが、非常に落ち着いていて分かりやすい!

内容は、スクレイピングのサイトを使って進みます(このコース用に作られたコースで非常に分かりやすい!)

サイトの中にサンプルコードもあるのでそれを参考にしながら進めることが可能です。

Pythonでスクレイピングと言えば、seleniumとBeautifulsoupがありますが、本コースではseleniumを使ってスクレイピングをおこなっていきます。

ChromeのバージョンとDriverのバージョンを揃えないと上手くいかないから要注意!

スクレイピングにおいて基本中の基本の内容だが講師の教え方分かりやすく納得の内容
画像のスクレイピングも学べます。

ディベロッパーツールの使い方や、HTML/CSSの知識があると非常にスムーズに学べます。

\30日以内なら返金無料/

また僕自身がPythonで出来ることについて以下のUdemy講座で分かりやすくまとめていますのでこちらも是非参考にしてみてください!

【実践】ビジネスケースとつなげてPythonで出来ること5つを学べる3日間集中コース

Udemy python
【オススメ度】
【講師】僕!
【時間】3.5時間
【レベル】初級~中級

Pythonで出来ることのうち以下の5つを網羅して学んでいきます。

・データ集計・加工・描画
・機械学習を使ったモデル構築
・Webスクレイピング
・APIの利用
・Webアプリケーション開発

データ集計・加工・描画と機械学習モデル構築に関してはKaggleというデータ分析コンペティションのWalmartの小売データを扱いながら学んでいきます。

WebスクレイピングとAPI利用とWebアプリケーション開発に関しては、楽天の在庫情報を取得してSlackに自動で通知するWebアプリケーションを作成して学んでいきます。

Pythonで何ができるのか知りたい!という方には一番はじめにまず受けていただきたいコースです!

Twitterアカウント(@statistics1012)にメンションいただければ最低価格の1200円になる講師クーポンを発行いたします!

\30日以内なら返金無料/

Udemyは世界最大の教育プラットフォームで僕自身も非常にお世話になっているプラットフォームです。

Udemy レビュー
【体験談】評判の良いUdemyを30コース以上受けている僕が徹底レビュー!当サイト【スタビジ】の本記事では、世界最大のオンライン学習プラットフォームであるUdemyのメリット・デメリット・評判・口コミについてまとめていきます!実際にプログラミングやデータサイエンス、Webマーケ関連のコースを30個以上受講している体験談をもとにお伝えしていきます。...

他にもいろいろなコースがありますので是非探してみてください!

【応用】Selenium×PythonでGoogle検索の検索順位を取得するプログラムを作ってみよう!

Seleniumを勉強する講座を紹介してきましたが、この記事ではおまけとしてSelenium×PythonでGoogle検索の検索順位を取得する方法を見てきます。

ウマたん
ウマたん
めちゃくちゃ便利なプログラムで実際にマーケティングに使えるから実装してみよう!

普段Google検索をした時に上位の記事から順番に見ていきますよね?

例えば、「化粧水 おすすめ」と調べた時に上位に出てくる記事はなんでしょう?

このタイミングで調べてみると以下のようになりました。

Google 検索

※タイミングによって検索順位は変わるので必ずしも一致するとは限りません。

ちなみにGoogleで検索順位を調べる時は、自分の検索履歴や位置情報に左右されてしまうのでプライベートブラウザで調べることをオススメします。

Googleの検索で上位を取れば取るほど多くの人の目に触れるため、多くの企業がいかに検索上位を取るかにしのぎを削っています。

このGoogleで検索上位を取る活動をSEO(Search Engine Optimization)と呼びます。

SEOに関して詳しく知りたい方は以下の記事を見てみてください!

SEO 勉強
【これだけ!】SEOの独学勉強ロードマップを徹底的に解説!当サイト【スタビジ】の本記事では、SEOの基本と独学勉強ロードマップについてまとめていきます!WebマーケティングにおいてSEOの知識は非常に重要です。SEOをしっかり学習してマスターしておくことで様々な領域に活きてきますのでしっかり勉強していきましょう!...

たとえば「化粧水 おすすめ」で自分の記事がどのくらいの順位につけているかを定点的に観測したいという需要があるでしょう。

しかし、それを手動でやるのは面倒です。

そこで、、、Seleniumの出番なのです!!!そんなプログラムは自動でやらせてしまいましょう!

from selenium import webdriver
from selenium.webdriver.chrome.options import Options
import time
import pandas as pd

options = Options()
# driver = webdriver.Chrome("{ご自身のディレクトリ}chromedriver.exe", options=options)
driver = webdriver.Chrome(options=options)

Keywords_list = pd.read_csv("Google_search_keyword.csv")
Keywords = Keywords_list["Keyword"]

df_list = []

for Keyword in Keywords:

    url = f"https://www.google.com/search?q={Keyword}"
    driver.get(url)
    time.sleep(2)

    article_list = driver.find_elements_by_class_name("tF2Cxc")

    url_list = []
    for article in article_list:
        url = article.find_element_by_tag_name("a").get_attribute("href")
        url_list.append(url)

    title_list = []
    text_num_list = []
    images_num_list = []
    h1_tag_list = []
    h1_tag_num_list = []
    h2_tag_list = []
    h2_tag_num_list = []
    h3_tag_list = []
    h3_tag_num_list = []
    h4_tag_list = []
    h4_tag_num_list = []
    h5_tag_list = []
    h5_tag_num_list = []


    for url in url_list:
        driver.get(url)
        time.sleep(2)

        title_list.append(driver.title)

        body = driver.find_element_by_tag_name("body").text
        text_num_list.append(len(body))

        images = driver.find_elements_by_tag_name("img")
        images_num_list.append(len(images))

        h1_list = driver.find_elements_by_tag_name("h1")
        h1_tag = []
        for h1 in h1_list:
            h1_tag.append(h1.text)
        h1_tag_list.append(h1_tag)

        h1_tag_num_list.append(len(h1_tag))

        h2_list = driver.find_elements_by_tag_name("h2")
        h2_tag = []
        for h2 in h2_list:
            h2_tag.append(h2.text)
        h2_tag_list.append(h2_tag)

        h2_tag_num_list.append(len(h2_tag))

        h3_list = driver.find_elements_by_tag_name("h3")
        h3_tag = []
        for h3 in h3_list:
            h3_tag.append(h3.text)
        h3_tag_list.append(h3_tag)

        h3_tag_num_list.append(len(h3_tag))

        h4_list = driver.find_elements_by_tag_name("h4")
        h4_tag = []
        for h4 in h4_list:
            h4_tag.append(h4.text)
        h4_tag_list.append(h4_tag)

        h4_tag_num_list.append(len(h4_tag))

        h5_list = driver.find_elements_by_tag_name("h5")
        h5_tag = []
        for h5 in h5_list:
            h5_tag.append(h5.text)
        h5_tag_list.append(h5_tag)

        h5_tag_num_list.append(len(h5_tag))

    df = pd.DataFrame([title_list, text_num_list, images_num_list, h1_tag_list, h1_tag_num_list,  h2_tag_list, h2_tag_num_list,  h3_tag_list, h3_tag_num_list,  h4_tag_list, h4_tag_num_list,  h5_tag_list, h5_tag_num_list]).T
    df.columns = ["title", "char_num", "images_num", "h1_list", "h1_num", "h2_list", "h2_num", "h3_list", "h3_num", "h4_list", "h4_num", "h5_list", "h5_num"]
    df["index"] = df.reset_index()["index"] + 1
    df["Keyword"] = Keyword
    df_list.append(df)

df_all = pd.concat(df_list)
    
driver.quit()

df_all.to_csv("Google_search_result.csv")

 

“Google_search_keyword.csv”のファイルは、調べたいキーワードを1行ずつ格納して上記のPythonファイルと同ディレクトリに置いておきましょう。

そうすることでSeleniumが勝手にそれぞれのキーワードの順位を調べてにいってくれるんです!

素晴らしいですね!

ちなみにseleniumのバージョン違いによってエラーを吐くことが多いので、それが煩わしいという人は「chromedriver_binary」というライブラリを使ってみてください!

ちなみにGoogle検索の順位を取得するコードやSEOの概要を含めたマーケティング全般については以下のUdemy講座で解説しているので、もっと詳しく学びたい!という方は受講してみてください。

【入門から実践まで】Webマーケティングの全体像とデータ活用を短時間で学び実際にSEO集客ツールを作ってみよう!

Webマーケ講座
【オススメ度】
【講師】僕自身!
【時間】2.5時間
【レベル】初級

Twitterアカウント(@statistics1012)にメンションいただければ月3回まで最低価格の1200円になる講師クーポンを発行できますよー!

\30日以内なら返金無料/このコースを見てみる

Selenium×Python まとめ

Seleniumは非常に便利で面白い使い方が出来るのでぜひ色々と触ってみてください!

ロボたん
ロボたん
こんなことがSelenium×Pythonで出来てしまうなんて・・・感動したよ!!
ウマたん
ウマたん
他にもできることはいくつかあるから是非Seleniumを触りながら色々試してみてね!

要素の抽出はBeautifulsoupでも出来るのでBeautifulsoupと組み合わせて使ってみてください!

PC
【初心者向け】Pythonのbeautifulsoupでスクレイピングを実装してみよう!当サイト【スタビジ】の本記事では、初心者向けにPythonでスクレイピングを行う上での注意点や実装方法そして勉強方法についてまとめていきます!スクレイピングは比較的カンタンに実装できますが、奥が深く他の知識と組み合わせることで高いシナジーが見込める分野です。...

また、Pythonでの自動化については以下の記事でまとめています!

Python 自動化
Pythonの自動化で出来ることの例と独学実装ロードマップを徹底解説!当サイト【スタビジ】の本記事では、Pythonで出来る自動化について徹底的に見ていきたいと思います!様々な業務を自動化して、ルーティン業務をなくしていくことであなたの仕事や生活は格段に楽になるはずです!Pythonの自動化で出来ること・勉強ロードマップ・そして最終的に簡単な実装を見ていきます。...

この記事では、SeleniumをPythonで動かす方法について見てきましたが、Pythonは他にも色んな使い方ができます。

Pythonの勉強は以下の記事にまとめていますので是非チェックしてみてください!

Python 勉強
【Python独学勉強法】初心者が3か月で習得できるロードマップ!当サイト【スタビジ】の本記事では、過去僕自身がPythonを独学を駆使しながら習得した経験をもとにPythonを効率よく勉強する方法を具体的なコード付き実装例と合わせてまとめていきます。Pythonはできることが幅広いので自分のやりたいことを明確にして勉強法を選ぶことが大事です。...

イラスト出典:Illustration by Stories by Freepik

スタビジアカデミーでデータサイエンスをさらに深く学ぼう!

スタアカサービスバナースタビジのコンテンツをさらに深堀りしたコンテンツが動画と一緒に学べるスクールです。

プレミアムプランでは私がマンツーマンで伴走させていただきます!ご受講お待ちしております!

スタビジアカデミーはこちら