2017-11-13

【Python】Windows Subsystem for LinuxでSelenium環境を整える

前回の記事では、Windows10にWindows Subsystem for Linuxの機能を使い、Ubuntu上でPython環境を構築しました。


Windows Subsystem for LinuxでUbuntu環境を構築し、Python環境を整える

Bash on WindowsからUbuntu環境を構築し、Python環境を整えてみた Windows Subsystem for Linux(Bash on Windows)により、Windows内でUbuntuを動かし、Bashシェルを使えるようになりました。 Windowsのコマンドプロンプトでたたくシェルは、cmd.exeというそうです。

今回は一歩進んで、Windows Subsystem for LinuxでSelenium環境をセットアップする方法を解説します。


うまくいくと、Seleniumを動かせるようになります。以下の画像では、Chromiumが起動させることができています。





手順

コマンドラインを起動し、

$ bash

と入力します。こうすると、bashシェルが使えるようになります。この後にもろもろのパッケージをインストールします。

$ sudo apt-get install python3
$ sudo apt-get install python3-pip
$ sudo pip3 install selenium
$ sudo apt-get install npm
$ sudo apt-get install chromium-browser

さてさて、そのあとはPythonファイルを実行するためのディレクトリを構築します。

$ cd /mnt/c
$ mkdir workspace #workspaceというフォルダを/mnt/c以下に作成
$ cd workspace # /mnt/c/workspaceに移動
$ mkdir pydev #workspaceというフォルダを/mnt/c/workspace以下に作成
$ cd pydev #/mnt/c/workspace/pydev


  • mkdirは、make directoryの略で、フォルダを作成します


Seleniumを動かすためのブラウザをダウンロードします。今回はchrome上で動かしたいので、chromedriverをダウンロードし、解凍します。


$ wget http://chromedriver.storage.googleapis.com/2.21/chromedriver_win32.zip
$ unzip chromedriver_win32.zip # /mnt/c/workspace/pydev/chromedriver.exe


  • wgetは、指定されたURLからファイルをダウンロードするコマンドです
  • unzipは、ファイルを解凍するコマンドです


/mnt/c/workspace/pydev下にchromedriver.exeを設置します。



次に、Seleniumが起動しているかを確かめるpythonファイルを作成します。
/mnt/c/workspace/pydevに移動し、以下のコマンドを実行します。

$ mkdir helloPython
$ cd /mnt/c/workspace/pydev/helloPython
$ touch hello.py


  • touchは、ファイルを作成します。





/mnt/c/workspace/pydev/helloPython/hello.pyをエディタで選択し、以下のコードを追加します。

hello.py

import sys
import os
from selenium import webdriver

//1
driver = webdriver.Chrome(executable_path='/mnt/c/workspace/pydev/chromedriver.exe')
//2
driver.get("https://www.google.co.jp/")
print(driver.title)

  1. こちらには、ダウンロードしたchromedriver.exeのpathを指定します
  2. getの引数にアクセスしたいページのURLを入力します。


あとはこのhello.pyを実行してみてください。

$ python3 hello.py


そうすると、chromeが自動で起動し、Googleにアクセスしてくれます。




注目の投稿

 PythonのTweepyを利用して、Twitter APIを利用している。 その中で、ハマったポイントをメモしておく。 まず、Searchに関して。 Twitter検索は、クライアントアプリ側では、全期間の検索が可能になっている。 一方で、APIを利用する際は、過去1週間しか...