Seleniumの導入(Docker利用)

投稿者:

経緯

ECMWFのサイトの絵を自動的に取得して比較に使いたい。

画像ファイルがランダムなURLに配置されるので、ECMWFのウェブページ側から辿るのが必須。

手作業で毎回取得するのはとっても負担。スクレイピングの出番!

ECMWFのサイトがIEで動かないから、Seleniumに手を出すか…(最初はちょっと拡張機能やろうとした)

環境構築に多少手間がかかるらしいから、この機にDockerも覚えよう(Dockerってルーチン化に向いているかよくわからないんだけど大丈夫かなぁ…具体的な不安は障害対応やオーバーヘッド、使用条件が変わっちゃわないかなど)

Dockerの導入

なにはともあれまずセットアップしてみる。言われた通りにdevice-mapperからインストールしてみるけど、これって何だろう?docker専用ライブラリみたいなもの?と思ったけどストレージドライバという汎用のものらしい(やっぱりよくわからない)

$ sudo yum install -y yum-utils device-mapper-persistent-data lvm2

次にyumにリポジトリを追加する。そしてdocker-ceをインストール。設定ファイルをいじらなくてもレポジトリ追加って出来るんだね。

$ sudo yum-config-manager --add-repo \
    https://download.docker.com/linux/centos/docker-ce.repo
$ sudo yum install docker-ce

先人の知恵ありがたや。以下の通りに打ってdockerを起動。

$ sudo systemctl start docker

dockerの使い方をろくに知らないまま、Seleniumのdockerの導入に進む。まぁ何とかなるっしょ。

$ sudo pip3 install selenium

試しにごく簡単なサンプルコードを動かしてみる。

from selenium import webdriver

# Chrome のオプションを設定する
options = webdriver.ChromeOptions()
options.add_argument('--headless')

# Selenium Server に接続する
driver = webdriver.Remote(
    command_executor='http://localhost:4444/wd/hub',
    desired_capabilities=options.to_capabilities(),
    options=options,
)

# Selenium 経由でブラウザを操作する
driver.get('https://qiita.com')
print(driver.current_url)

# ブラウザを終了する
driver.quit()

動いた!ヘッドレスモードで動かすから何やっているか見えなくて、思ったより時間かかったけれど、自動処理できるなら問題ないか。

参考文献

Docker入門(さくらのナレッジ) – https://knowledge.sakura.ad.jp/13265/

10分で理解する Selenium – https://qiita.com/Chanmoro/items/9a3c86bb465c1cce738a

CentOS7×Chromeでスクレイピング環境を構築するチュートリアル – https://qiita.com/sakuraya/items/8d415e154ce60a83d63d#

返信を残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です