09b27821d4f27c4e9b9458072baad72235abb726
Linux/SeleniumDriver.md
| ... | ... | @@ -0,0 +1,73 @@ |
| 1 | +[[_TOC_]]
|
|
| 2 | +
|
|
| 3 | +Selenium Driver を使って Chrome (headless モード)を自動運転する。
|
|
| 4 | +
|
|
| 5 | +# 環境
|
|
| 6 | +- CentOS Linux release 7.7.1908 (Core)
|
|
| 7 | +- Google Chrome 79.0.3945.88
|
|
| 8 | +- ChromeDriver 79.0.3945.36
|
|
| 9 | +- Python 3.6.8
|
|
| 10 | +
|
|
| 11 | +# インストール
|
|
| 12 | +1. Chrome 用リポジトリ設定を作成
|
|
| 13 | +/etc/yum.repos.d/google-chrome.repo
|
|
| 14 | + ```
|
|
| 15 | + [google-chrome]
|
|
| 16 | + name=google-chrome
|
|
| 17 | + baseurl=http://dl.google.com/linux/chrome/rpm/stable/$basearch
|
|
| 18 | + enabled=1
|
|
| 19 | + gpgcheck=1
|
|
| 20 | + gpgkey=https://dl-ssl.google.com/linux/linux_signing_key.pub
|
|
| 21 | + ```
|
|
| 22 | +1. Chrome のインストール
|
|
| 23 | + ```
|
|
| 24 | + # yum install -y libOSMesa google-noto-cjk-fonts google-chrome-stable
|
|
| 25 | + ```
|
|
| 26 | +1. Chrome Driver のインストール (EPELリポジトリ)
|
|
| 27 | + ```
|
|
| 28 | + # yum install -y libX11 GConf2 fontconfig lsof chromedriver
|
|
| 29 | + ```
|
|
| 30 | +1. バージョン確認
|
|
| 31 | + ```
|
|
| 32 | + # google-chrome --version
|
|
| 33 | + Google Chrome 79.0.3945.88
|
|
| 34 | + # chromedriver -v
|
|
| 35 | + ChromeDriver 78.0.3904.108 (...省略...)
|
|
| 36 | + ```
|
|
| 37 | +1. Chrome と ChromeDriver のバージョンが異なっている場合は ChromeDriver を手動でダウンロード
|
|
| 38 | +[Downloads - ChromeDriver - WebDriver for Chrome](https://sites.google.com/a/chromium.org/chromedriver/downloads)
|
|
| 39 | + ```
|
|
| 40 | + # yum erase -y chromedriver
|
|
| 41 | + # wget https://chromedriver.storage.googleapis.com/79.0.3945.36/chromedriver_linux64.zip
|
|
| 42 | + # unzip chromedriver_linux64.zip
|
|
| 43 | + # mv chromedriver /usr/bin/
|
|
| 44 | + # rm chromedriver_linux64.zip
|
|
| 45 | + # chromedriver -v
|
|
| 46 | + ChromeDriver 79.0.3945.36 (...省略...)
|
|
| 47 | + ```
|
|
| 48 | +1. Chrome が headless モードで動作することを確認
|
|
| 49 | +エラーが出る場合はオプションを追加してみる: `--disable-gpu`, `--disable-dev-shm-usage`, `--disable-setuid-sandbox`, `--no-sandbox`, `disable-infobars`
|
|
| 50 | + ```
|
|
| 51 | + # google-chrome --headless --dump-dom https://www.google.com/
|
|
| 52 | + ```
|
|
| 53 | +1. Selenium パッケージのインストール
|
|
| 54 | + ```
|
|
| 55 | + # pip3 install selenium
|
|
| 56 | + ```
|
|
| 57 | +1. 動作確認
|
|
| 58 | +testChromeDriver.py
|
|
| 59 | + ```python
|
|
| 60 | + #!/bin/python3
|
|
| 61 | +
|
|
| 62 | + from selenium import webdriver
|
|
| 63 | + from selenium.webdriver.chrome.options import Options
|
|
| 64 | +
|
|
| 65 | + options = Options()
|
|
| 66 | + options.add_argument('--headless')
|
|
| 67 | + #options.add_argument('--disable-gpu')
|
|
| 68 | + options.add_argument('--window-size=1280,1024')
|
|
| 69 | + driver = webdriver.Chrome(chrome_options=options)
|
|
| 70 | + driver.get('https://www.google.co.jp/')
|
|
| 71 | + print(driver.title) #=> Google
|
|
| 72 | + driver.save_screenshot('test.png')
|
|
| 73 | + ```
|