LoginSignup
11
12

More than 1 year has passed since last update.

【これも】WSL2+Chrome+Selenium+Python【検索してなぞっただけ】

Last updated at Posted at 2021-07-12

概要

SeleniumはWebブラウザーの操作を自動化するソリューションで、たとえばWebサイトに検索ワードを入れて検索ボタンを押し、ダウンロードボタンを押すような一連の動作を自動化することによって、Webアプリケーションのテストや自動作業(一種のRPA)に使える。
今回はWindows+WSL2を使って、Selenium+Python3が動くところまでを概説する。
基本的に人の投稿を検索してなぞっただけです。

  • WSL2にLinux用のChromeをインストールする
  • さらにSelenium-Python3とChromeDriverをインストールする
  • Seleniumのサンプルプログラムを動かす

とりあえずWindows 10でWSL2が動作し、Xサーバーが使えるところまで来たという前提で話を進める。
ここまでは以下の記事にまとめたので、よろしければ見てください。

前書き

ふだんパソコンはWindows主力だが、Perl+EmacsはWSL1+Ubuntuで使っている。
どちらもWindowsでやろうとしたことがあるが、WSL+Ubuntuでやったほうがカンタンだ。
とりあえずLinuxだとそのまま使えるハックがQiitaやブログに沢山載っている。

今回、Seleniumを使ったWebクローリングを自動化するため、WSL2にPython3とChromeを入れることにした。
Windowsを使ってSeleniumを使うことも、PythonではなくてPerlで使うことも出来るが、やはり用例が多いUbuntuを使うことにしたのだ。
WSL1のままChrome、Python3、Seleniumを動かすことも出来るはずだが、なぜかChromeのインストールがうまく出来なかったので、WSL2で新規に環境を構築した。
個人的な話が多くてスミマセン。
だが、これからWindows環境でUbuntu、Emacs、Python3、Seleniumなどを使うなら、WSL2を使うのがラクチンな気がするので、参考になる人もいるだろう。

Chromeをインストール

SeleniumはFirefoxなどにも対応しているが、今回はGoogle Chromeを使った。
まずはインストール。
以下の記事を参考にした。

WSL2のbashから以下のコマンドを打ち込む。
上から取得元の追加、公開鍵の追加、Ubuntuのアップデート、Chromeのインストールだ。

$ sudo sh -c 'echo "deb http://dl.google.com/linux/chrome/deb/ stable main" >> /etc/apt/sources.list.d/google-chrome.list'
$ sudo wget -q -O - https://dl-ssl.google.com/linux/linux_signing_key.pub | sudo apt-key add -
$ sudo apt update
$ sudo apt install google-chrome-stable

できたら起動。

$ google-chrome&

&はバックグラウンド実行で、Chromeが起動してもbashの操作を続けるため。
無事起動すると以下のダイアログが表示される。
chrome_1st.png
Chromeをデフォルトのブラウザーにしますか、統計情報をGoogle社に送りますかと聞かれているが、無批判に受け入れてOKした。(下のはオフで良かったかもしれない〜

Python3は/usr/bin/python3をそのまま使った

Microsoft Storeから"Ubuntu"(バージョン番号なし)をWSL2にインストールすると、Ubuntu 20.04が入る。
この状態で、もうPython 3.8.5が入っている。

$ cat /etc/lsb-release
DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=20.04
DISTRIB_CODENAME=focal
DISTRIB_DESCRIPTION="Ubuntu 20.04.2 LTS"

$ which python3
/usr/bin/python3

$ python3 -V
Python 3.8.5

/usr/bin/python3はシステムが使うものだからユーザーがいじっちゃいけないという話もあるが、今回は簡単にこれを使うことにした。
Anacondaやvenvなどを使った仮想環境も使っていない。

Seleniumをインストールする

以下しばらくの間、こちらの記事を参考にする。

まずpython3-seleniumをインストールした。

$ sudo apt install python3-selenium -y

ChromeDriverをインストールする

Seleniumをインストールすると、/usr/bin/chromedriverというファイルが出来るが、これはそのままでは使えないらしいので、ダウンロードしてきて置換する。

なるべく新しいバージョンで、でもChromeのバージョンを下回るものでなければダメらしい。
Chromeのバージョンを調べる。

$ google-chrome --version
Google Chrome 91.0.4472.114

次に以下のサイトから、ChromeDriverのバージョンを調べる。
https://chromedriver.storage.googleapis.com/index.html

SnapCrab_httpschromedriverstoragegoogleapiscomindexhtml - Google Chrome_2021-7-12_15-19-44_No-00.png

91.0.4472.101が良さそうなので、その中のLinux用のURLを調べ、WSL2側でダウンロードする。

SnapCrab_httpschromedriverstoragegoogleapiscomindexhtmlpath=9104472101 - Google Chrome_2021-7-12_15-20-36_No-00.png

$ wget https://chromedriver.storage.googleapis.com/91.0.4472.101/chromedriver_linux64.zip

zip形式なので、unzipをインストールして解凍し、/usr/bin/chromedriverを置換した。

$ sudo apt install unzip -y
$ unzip chromedriver_linux64.zip
$ sudo mv chromedriver /usr/bin/chromedriver

以下のテストコードをtest.pyとして作成する。

#! /usr/bin/python3

from selenium import webdriver

options = webdriver.ChromeOptions()
options.add_argument('--headless')
options.add_argument('--disable-gpu')
driver = webdriver.Chrome(options=options) 

driver.get('https://www.google.com/')
print(driver.title)

search_box = driver.find_element_by_name("q")
search_box.send_keys('ChromeDriver')
search_box.submit()
print(driver.title)

driver.save_screenshot('search_results.png')
driver.quit()

実行してみる。

$ chmod +x ./test.py
$ ./test.py

search_results.pngというファイルができ、Chromeで「ChromeDriver」という言葉を検索しているところのスクショが取れていたら成功。

(この項終わり)

11
12
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
11
12