こんにちは、ミナピピンです。
先日クラウドワークスの依頼でレンタルサーバー上でSeleniumを実行してスクレイピングを行いたいという依頼をうけて、レンタルサーバー上にPythonとSeleniumでのスクレイピング環境を構築するために調査した結果をブログにまとめておこうと思います。
環境
サーバー さくらVPS
OS CentOS8(Stream8)
言語 Python3.6
webブラウザ GoogleChome
ツール Selenium
Google-chromeのインストール
$ sudo vi /etc/yum.repos.d/google-chrome.repo
/etc/yum.repos.d/google-chrome.repoに以下のように記述します
[google-chrome] name=google-chrome baseurl=http://dl.google.com/linux/chrome/rpm/stable/$basearch enabled=1 gpgcheck=1 gpgkey=https://dl-ssl.google.com/linux/linux_signing_key.pub
中身を追記したら保存して更新コマンドを叩きます。するとchromeのインストールが開始されます
$ sudo yum update
これでyum installが通るようになるので、最新版のchromeをインストールします。
$ sudo yum install google-chrome-stable # バージョンを確認 $ google-chrome --version
↑を実行して表示されたChromeのバージョンはあとで使うので、どこかにメモしておいて下さい
ChromeDriverのインストール
次にブラウザを自動操作するためにdriverをインストールするわけですが、ここで注意点なのはドライバーのバージョンはインストールしたChromeのバージョンに合わせるという点です。
マイナーバージョンの違いでも動かなくなることがあるのでなるべく近しいバージョンを探しましょう。
GoogleGhromeのリリースの情報はここで確認できます。
バージョン一覧はここから探せます。
バージョンを確認したら以下のコマンドを実行します。執筆時のバージョンは96.0.4664.45ですが、恐らくこれからもバージョンアップでバージョンが変わると思うので先ほどの$ yum install google-chrome-stable
でインストールしたものと同じもしくは近いバージョンのドライバーをインストールしてください。
wget https://chromedriver.storage.googleapis.com/98.0.4758.80/chromedriver_linux64.zip
$ wget https://chromedriver.storage.googleapis.com/96.0.4664.45/chromedriver_linux64.zip
ドライバーをインストールしたら次はZIPを解凍してプログラム上で使用できるように権限を755(全部許可)にして緩めます。これをしないとpythonのプログラム上でドライバーを操作する際にpermission errorが起こります。
# zip解凍コマンドが入っていない場合は最初に↓コマンドでインストールが必須 $ sudo yum -y install unzip $ unzip chromedriver_linux64.zip $ sudo mv chromedriver /usr/local/bin/ $ sudo chmod 755 /usr/local/bin/chromedriver $ rm chromedriver_linux64.zip
Pythonのインストール
次はPythonをインストールします。ちなみにバージョンを指定したPythonのインストールコマンドはCentOS7と8で代わっているみたいなので注意してください。8の場合は以下のコマンドでインストールできます。
# Pythonをインストールする $ sudo dnf install python36
インストールが確認できているか以下のコマンドで確認してください。コマンドが通ってバージョンなどが表示されていればインストールは成功しています。
$ python3 --version Python 3.6.8 $ pip3 --version pip9.0.~~~~~
参考:https://genchan.net/it/programming/python/12436/
Seleniumのインストールと動作確認
次はpythonのライブラリのseleniumとchromedriverをインストールします。
# seleniumとchromedriverをインストールする $ pip3 install selenium $ pip3 install chromedriver_binary
サンプルコードの実行
これで最低限の環境は整ったのでサンプルコードを実行してみます。まずはPythonのidleを立ち上げます
$ python3
これでコンソールの左端が「>>>」に変わっていればPythonのコンソールに入っています。
元のコマンドラインに戻る際はexit()
で戻ることができます。
from selenium import webdriver
import time
from selenium.webdriver.chrome.options import Options
from selenium.webdriver.common.desired_capabilities import DesiredCapabilities
import chromedriver_binary
options = webdriver.ChromeOptions()
options.add_argument('--headless')
options.add_argument("--no-sandbox")
driver = webdriver.Chrome(executable_path = '/usr/local/bin/chromedriver', options=options)
driver.get('https://www.google.co.jp/')
print(driver.page_source)
これでhtmlのページソース(~~~~~~~~~~~~~~~~~</script></body>)がprintで表示されていれば環境構築は完了です。
注意点としてはVPSのようなサーバーは普通のPCのようなGUIがないので、SELENIUMを使用する際はヘッドレスモードで使用しないいけないという点です。
関連記事:【Python】VPSサーバーでSelenium+GoogleChromeのスクレイピング環境を構築した時に遭遇したエラーまとめ
【お知らせ】
Pythonの定期実行環境構築でお悩みの方はMENTAにて環境構築及びスクリプトの定期実行に関するご相談を受け付けておりますので、お気軽にご相談ください。(招待リンクから登録すると利用料が500円割引になるのでお得です)
招待リンク:https://menta.work/invite/wYZXKkSpS2fg9Z3f
自分のプロフィール:https://menta.work/user/26168
参考:https://qiita.com/gano/items/f46adc5dff055baf3785
コメント
[…] 関連記事:CentOSのVPSサーバーでPython+Selenium+ChromeDriverのスクレイピング環境を構築する […]