CentOSでChromeDriver、GoogleChrome、Seleniumを使う方法を解説

当ページのリンクには広告が含まれています。
CentOSでChromeDriver、GoogleChrome、Seleniumを使う方法を解説

こんにちは、はるです。

GoogleDriverとGoogleChromeを導入したいんだけどどうやるの?Seleniumを使えるようになりたい。

こんな悩みを解決していきます。 

結論、ChromeDriverとGoogleChromeをインストールして、Seleniumを使っていくやり方は2つあります。

chromedriver-binaryを使うか、使わないかです。

私はbinaryを使うほうがラクでした。chromedriver-binaryを使う方法と使わない方法、順番に解説していきます。

動作環境

  • CentOS7 さくらのVPS
  • メモリ 512 MB
  • ストレージ SSD 25 GB
  • CPU 1コア
  • Python 3.6.8
目次

chromedriver-binaryを使う方法

chromedriver-binaryを使う方法

流れは以下のとおりです。

  1. GoogleChromeをインストール
  2. chromedriver-binaryをインストール
  3. Seleniumをインストール
  4. 実際のプログラムにインポートする

GoogleChromeをインストール

Chromeをインストールする前に、GoogleChromeリポジトリを追加していきます。

まずは、google-chrome.repoファイルを作って、

sudo vi /etc/yum.repos.d/google-chrome.repo

その中に、以下のコードを貼り付けてください。

[google-chrome]
name=google-chrome
baseurl=http://dl.google.com/linux/chrome/rpm/stable/x86_64
enabled=1
gpgcheck=1
gpgkey=https://dl.google.com/linux/linux_signing_key.pub

保存したあと、google-chrome-stableをインストールします。

sudo yum -y install google-chrome-stable

※libOSMesaを付けてインストールするとクラッシュに対応するようです。
付ける場合は以下とおり。
sudo yum -y install google-chrome-stable libOSMesa

次に、パージョンを確認します。

google-chrome --version
↓
Google Chrome 89.0.4389.114

出てきたバージョンはメモしておいてください。

chromedriver-binaryをインストール

ChromeDriver – WebDriver for Chromeというサイトを参考に、chromedriver-binaryをインストールしていきます。

先ほどメモしたChromeのバージョンと同じものを選んでください。

pip install chromedriver-binary==89.0.4389.23
chromedriver-binaryをインストール

Seleniumをインストール

さいご、Seleniumをインストールしていきます。

pip install selenium

実際のプログラムにインポートする

インストールは完了したので動かしていきます。コピペして実際に使ってみてください。

Seleniumの公式ドキュメント
PythonでSeleniumを操作する

#完成版

from selenium import webdriver
from selenium.webdriver.chrome.options import Options
from selenium.webdriver.common.keys import Keys
import chromedriver_binary

options = Options()
options.add_argument('--headless')
options.add_argument("--no-sandbox")

print('before')
driver = webdriver.Chrome(chrome_options=options)
print('after')
driver.get('https://www.google.co.jp/')

assert 'Google' in driver.title

input_element = driver.find_element_by_name('q')
input_element.send_keys('Python')
input_element.send_keys(Keys.RETURN)

assert 'Python' in driver.title

for h3 in driver.find_elements_by_css_selector('a > h3'):
  a = h3.find_element_by_xpath('..')
  print(h3.text)
  print(a.get_attribute('href'))

driver.quit()

文字化けする場合

viで.pyを編集するときに日本語が文字化けしたり、出力するときに変換エラーが出たりすることがあります。

#エラー内容
UnicodeEncodeError: 'ascii' codec can't encode characters in position 0-8: ordinalnot in range(128)

そのときは、以下2つのコードで修正。

localectl set-locale LANG=ja_JP.utf8
source /etc/locale.conf

LANGがja_JP.utf8になっているか確認しましょう。

cat /etc/locale.conf
↓
LANG=ja_JP.utf8

chromedriver-binaryを使わない方法

chromedriver-binaryを使わない方法

流れは以下のとおりです。

binaryを使う時とほぼ同じですが、2と4番目が少し違うので、そこだけ解説します。

  • GoogleChromeをインストール
  • ChromeDriverのインストール
  • Seleniumをインストール
  • 実際のプログラムにインポートする

ChromeDriverのインストール

chromedriver-binaryをインストールする代わりに、ChromeDriverをインストールします。

ChromeDriver – WebDriver for Chromeというサイトに行き、インストールしたGoogleChromeと同じバージョンをクリック。
ChromeDriverのインストール

zipファイルが表示されます。

ダウンロードするのにURLが必要なので、Linux版のリンクアドレスをコピー。
ChromeDriverのダウンロードURL

wgetでダウンロードします。

wget https://chromedriver.storage.googleapis.com/89.0.4389.23/chromedriver_linux64.zip

次にzipを解凍。

unzip chromedriver_linux64.zip

/usr/local/bin/ にchromedriverを置きます。

sudo mv chromedriver /usr/local/bin/

chmodコマンドで、利用できるように権限を変更。

chmod 755 /usr/local/bin/chromedriver

念のため、バージョンを確認しておきましょう。

chromedriver -version
↓
ChromeDriver 89.0.4389.23 (61b08ee2c50024bab004e48d2b1b083cdbdac579-refs/branch-heads/4389@{#294})

Chromeと同じバージョンなら大丈夫です。

実際のプログラムにインポートする

chromedriver-binaryありのときは4行目でbinaryをインポートしていましたが、無しのときはbinaryのimport文を消すだけでOK。

公式ドキュメント
PythonでSeleniumを操作する

#完成版 chromedriver_binaryなし

from selenium import webdriver
from selenium.webdriver.chrome.options import Options
from selenium.webdriver.common.keys import Keys

options = Options()
options.add_argument('--headless')
options.add_argument("--no-sandbox")

print('before')
driver = webdriver.Chrome(chrome_options=options)
print('after')
driver.get('https://www.google.co.jp/')

assert 'Google' in driver.title

input_element = driver.find_element_by_name('q')
input_element.send_keys('Python')
input_element.send_keys(Keys.RETURN)

assert 'Python' in driver.title

for h3 in driver.find_elements_by_css_selector('a > h3'):
  a = h3.find_element_by_xpath('..')
  print(h3.text)
  print(a.get_attribute('href'))

driver.quit()

文字化けする場合

binaryありと同じく、文字化けしたときは以下2つのコードで修正してください。

localectl set-locale LANG=ja_JP.utf8
source /etc/locale.conf

LANGがja_JP.utf8になっているか確認しましょう。

cat /etc/locale.conf
↓
LANG=ja_JP.utf8

  
以上となります。

私自身、chromedriver-binaryに苦戦しました。調べても、使っている人と使わない人がいて、意味不明…
chromedriver-binaryありなしの解説記事はたぶん無かったので、参考になれば幸いです。

Seleniumに限らず、スクレイピングをもっと勉強したい方は、以下の書籍でより深く勉強できますよ。

参考

CentOSでChromeDriver、GoogleChrome、Seleniumを使う方法を解説

この記事が気に入ったら
フォローしてね!

よかったらシェアしてね!
  • URLをコピーしました!

この記事を書いた人

23歳。埼玉出身・東京在住。
エンジニア × ブロガー × 個人事業主

意識高い系だったけど、落ち着いた人。
今この瞬間を楽しもうと決めました。
のんびりエンジニアとして働きつつ、小説書いたり仮想通貨トレードをしたり、好きなことを取り組んでいます。

MBTI:INFJ
好き:海・音楽・妄想・人

コメント

コメントする

目次