注目キーワード

【Python】seleniumを使ってWebサイトにアクセスする(Google Colaboratory&2023年2月版)

これまでもrequestsなどを用いてWebサイトにアクセスしてきました。複雑なWebサイトにアクセスするとき、単にURLにアクセスするだけでは難しい処理もあります(例えばログインするなどです)。このような処理を行う際、seleniumと呼ばれるフレームワークを使うことがあります。selenium自身がどういうものか?については公式のサイトも確認してみてください。こちらの記事ではGoogle colaboratoryの環境を使って、seleniumフレームワークの環境からWebサイトにアクセスする方法を確認してみます。

環境設定

selenumは高機能な反面、環境設定で躓くことが多いです。これはブラウザと通信してやり取りしながら、Webアクセスを行うため、どうしても関わるプログラムや環境が大規模になってしまうからです。こちらの記事では、2023年1月の情報として、Google Colaboratoryに環境構築を行ったものを紹介します。

インストール

Google Colaboratoryのセルに以下のコマンドを入力して実行してしばらく待つことで、環境構築が可能になります。しばらくメッセージが続くので実行を待っていてください。

%%shell# Ubuntu no longer distributes chromium-browser outside of snap## Proposed solution: https://askubuntu.com/questions/1204571/how-to-install-chromium-without-snap# Add debian bustercat > /etc/apt/sources.list.d/debian.list <<'EOF'deb [arch=amd64 signed-by=/usr/share/keyrings/debian-buster.gpg] http://deb.debian.org/debian buster maindeb [arch=amd64 signed-by=/usr/share/keyrings/debian-buster-updates.gpg] http://deb.debian.org/debian buster-updates maindeb [arch=amd64 signed-by=/usr/share/keyrings/debian-security-buster.gpg] http://deb.debian.org/debian-security buster/updates mainEOF# Add keysapt-key adv --keyserver keyserver.ubuntu.com --recv-keys DCC9EFBF77E11517apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 648ACFD622F3D138apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 112695A0E562B32Aapt-key export 77E11517 | gpg --dearmour -o /usr/share/keyrings/debian-buster.gpgapt-key export 22F3D138 | gpg --dearmour -o /usr/share/keyrings/debian-buster-updates.gpgapt-key export E562B32A | gpg --dearmour -o /usr/share/keyrings/debian-security-buster.gpg# Prefer debian repo for chromium* packages only# Note the double-blank lines between entriescat > /etc/apt/preferences.d/chromium.pref << 'EOF'Package: *Pin: release a=eoanPin-Priority: 500Package: *Pin: origin "deb.debian.org"Pin-Priority: 300Package: chromium*Pin: origin "deb.debian.org"Pin-Priority: 700EOF# Install chromium and chromium-driverapt-get updateapt-get install chromium chromium-driver# Install seleniumpip install selenium

インストール後の確認

次にサンプルソースを用いて動作を確認します。

  • まずseleniumフレームワークからWebdriverをインポートします
  • アクセスする動作確認先はYahooのサイトとします
  • オプションとして、ヘッドレスなブラウザを想定します(データの通信だけ使います)
  • 環境設定でインストールしたchromedriverを指定し、seleniumフレームワークを起動します
  • フレームワークを用いてYahooのサイトにアクセスします
    • アクセスした先のWebページのタイトルをprintします
    • アクセスした先のスクリーンショットを撮影して保存します
    • ブラウザを終了します

実行結果

実行結果を確認します。セルを実行するとこのように「Yahoo! JAPAN」のページにアクセスできました。

スポンサーリンク

スクリーンショットを確認すると、今回はフォントの設定をしていないので文字化けしてしまっていますが、Yahoo! JAPANのサイトにアクセスできたことが分かります。

こうしてWebブラウザを通じてWebサイトにアクセスすることができました。このフレームワークを用いると「ユーザ名とパスワードを入力してログインボタンを押す」といった複雑な処理を自動化することができるため、かなり複雑な処理を書くことができるようになります。requestsなどの処理と同じですが、サーバーに負荷をかけすぎない範囲で一度動作を試してみてくださいね。