色々試行錯誤したので備忘録として残す
ちなみに最近はpyppeteer使えば、感覚的に使えるしChromeDriverのインストールも勝手にやってくれて便利だけど、古いやり方の方がネット資料も多いので。
pyppeteerの使い方関連に関してはこちらを参照
参考:Pythonでスクレイピング - Seleniumなんてもう古い!?・・・Pyppeteerの使い方
参考:pyppeteerの使い方
この記事では、表題の通りPythonでSeleniumを使用してスクレイピングを行うための準備について記載する。
やる事リスト
1.pyenvのインストール
2.venvで環境を汚さないようにする。
3.ChromeDriver-binaryというモジュールをpipでインストールする
1.pyenvをインストールする為の準備と設定
1.1.必要モジュールのインストール
# Ubuntuの場合
sudo apt install -y make build-essential libssl-dev zlib1g-dev libbz2-dev \
libreadline-dev libsqlite3-dev wget curl llvm libncurses5-dev libncursesw5-dev \
xz-utils tk-dev libffi-dev liblzma-dev python-openssl git
# CentOSの場合
sudo yum install gcc zlib-devel bzip2 bzip2-devel readline \
readline-devel sqlite sqlite-devel openssl openssl-devel git \
libffi-devel
1.2.pyenvをインストール
# ソースをカレントディレクトリに配置
git clone https://github.com/pyenv/pyenv.git ~/.pyenv
# .bashrc に下記の内容を記述
export PYENV_ROOT="$HOME/.pyenv"
export PATH="$PYENV_ROOT/bin:$PATH"
eval "$(pyenv init --path)"
if command -v pyenv 1>/dev/null 2>&1; then
eval "$(pyenv init -)"
fi
再読込(いらないかも)
. .bashrc
※忘れるのでメモ(pyenvに任意のバージョンをインストールし、使用する)
# インストール可能なバージョン一覧を表示
pyenv install -l
# インストール
pyenv install 3.9.10
# 使用する
pyenv global 3.9.10
# ローカルにインストール済のバージョン確認
pyenv versions
# 現在使用中のバージョン確認
pyenv version
# 使用可能状態になると、今までpython3コマンドで打たないと駄目だったのが、pythonコマンドで使えるようになる。
python --version
2.venv設定を行う
python -m venv <好きな名前>
例)
python -m venv 3.9.10
# venv環境に入る時
. 3.9.10/bin/activate
# venv環境から抜ける場合
deactivate
3.ChromeDriver-binaryをインストール
# Seleniumも入れる
pip install selenium chromedriver-binary
※これは、ChromeDriverとは別物でpipを使用してインストールする
※ローカル環境にすでに通常版Chromeが入っているとバージョンの違いでPythonで動かした時、下記のようなエラーが出るので注意
selenium.common.exceptions.SessionNotCreatedException: Message: session not created: This version of ChromeDriver only supports Chrome version 99
Current browser version is 98.0.4758.102 with binary path /usr/bin/google-chrome
ChromeDriver-binaryの一覧は下記URLで確認出来る
https://pypi.org/project/chromedriver-binary/#history
バージョンを指定してインストールする場合のコマンド
pip install chromedriver-binary==98.0.4758.102.0
※ChromeDriver-binaryをインストールするとChromeDriverとは違ってimport文だけで使用出来る
# ChromeDriver-binaryを使用した場合
import chromedriver_binary
from selenium import webdriver
driver = webdriver.Chrome()
driver.get('https://www.yahoo.co.jp')
###########################################
# ChromeDriver-binaryを使用しない場合
from selenium import webdriver
driver = webDriver.Chrome(executable_path='/home/vagrant/chromedriver')
driver.get('https://www.yahoo.co.jp')
スクリピングにはSeleniumだけでなくScrapy?やらrequests?やら構造解析用にBeautifulSoupやら色々モジュールがあってちゃんと頭の中でまとまってないので、そこは別の方にお任せ(他人任せ)