普段ブラウザでアクセスするページから、直接データを取得したい時ってありますよね。
それらのデータを、ブラウザを開いてコピペで収集・・というのは結構手間。
Web上のあらゆる情報を自由自在に取得することができるようになれば、様々な場面で業務の効率化ができそうではないですか?
例えば、、、
- 自社システムで管理しているデータを自動収集してExcel分析したい
- Web上で検索して、手作業で取得していたデータを自動収集したい
- 株価のデータなど定期的に自動収集し、自社で活用しやすいように自動で整形したい
このような日々の業務の中で、スクレイピングを活用できるようになれば、今まで取り組んでいた業務の時短や効率化ができるかもしれません。
そこで、今回は Web上から情報を自動収集する技術「スクレイピング」についてご紹介します。
Seleniumとは
Seleniumは、WEBブラウザの操作を自動化するためのアプリケーションです。
WEBブラウザで行うクリック操作や文字入力をプログラム言語を使って操作できるため、WEBアプリケーションのテストやスクレイピングで利用されています。
ほかにも、Pythonでデータ取得によく使われるライブラリとしては、Requests、Beautiful Soup、Scrapyがあります。
スクレイピングの注意点
スクレイピングを行うにあたっての注意点です。
- 情報解析目的で利用する(著作権法の順守)
- 同意なく個人情報を取得しない
- 対象のサーバーに過剰な負荷をかけない(スクレピング頻度を自然検索の範囲内にする)
- 利用規約を守る(利用規約でスクレイピングやクローリングが禁止されていないか確認)
みなさん、ルールを守ってスクレイピングしましょう!
Seleniumのインストール
以下のコマンドからライブラリをインストールします。
selenium3とselenium4では、プログラムの書き方にも少し変更が加わっています。
本記事では、seleniumのバージョンを「4.9.0」に指定してインストールします。
Anacondaの場合
conda install selenium=4.9.0 -c conda-forge |
pipの場合
pip install selenium=4.9.0 |
Webdriver Managerのインストール
これまでは、ブラウザのバージョンを確認し、そのバージョンに対応したドライバをインストールする必要がありましたが、Seleniumのバージョンが 4.6 以降であれば、自動でインストールできるようになりました!
ということで、各ブラウザのバージョンを自動で確認して実行してくれるライブラリ「webdriver-manager」をインストールします。
Anacondaの場合
conda install -c conda-forge webdriver-manager |
「自動だから安心」と油断していたら、2023年7月後半にChromeDriverのダウンロード方法が変更になっていたため、今まで動いていたプログラムがすべてエラーになる、というハプニングが発生しました。
そんな急な変更にも対応できるように、手動でインストールする方法もご紹介しておきます。
<chromeのバージョンの確認方法>
chrome://settings/help
Chromeのバージョンが115以上の方は、
以下のアドレスにアクセスし「Stable」の中から対象のドライバーをダウンロードします。
https://googlechromelabs.github.io/chrome-for-testing/#stable
1)URLを選択し、右クリック > https://…… に移動
2)URLをコピーしてブラウザのアドレスに張り付けし、アクセスします。
アクセスするとダウンロードが始まります。
※バージョンが115より古いドライバーをインストールする場合は、以下のURLにアクセスしてください。
https://chromedriver.chromium.org/downloads/version-selection
WEBサイトを表示する
スクレイピングをするために必要な準備が整ったので、早速WEBサイトを表示してみましょう。
以下のコードを実行してみましょう。
サンプルプログラム
from selenium import webdriver from selenium.webdriver.chrome.service import Service as ChromeService from webdriver_manager.chrome import ChromeDriverManager from time import sleep #ドライバを自動でインストールする service = ChromeService(ChromeDriverManager().install()) #ブラウザ操作・ページの要素検索を行うオブジェクト driver = webdriver.Chrome(service=service) #google検索画面を開く driver.get(“https://www.google.co.jp”) #3秒間何もしない sleep(3) #画面を閉じる driver.quit() |
Googleの検索画面が表示され、3秒後に自動で閉じればOKです。
今回は、スクレイピングに必要なライブラリやWEBドライバーをインストールして、テストするところまでご紹介しました。
Web上から収集してきた情報をExcelファイルに保存したり、メールにテキストを貼り付けて送付したりなど、スクレイピングと他の技術と組み合わせることでより業務効率化を図ることもできます。
次回は、Seleniumの基本的な使い方などをご紹介したいと思います。
まとめ
- Pythonのseleniumを使えば簡単にスクレイピングができる
- 日々の業務の中に、スクレイピングの活用場面はたくさん!
- くれぐれもルールを守ってスクレイピングしましょう