楽天ROOMをpythonで自動化する ~ブラウザを開いてwebページにアクセス~
前回、chromedriverのダウンロード、seleniumのインストールでブラウザを操作する準備ができました。
今回からブラウザを操作するpythonのコードを紹介していきます。
早速ですが、
1. ブラウザを開く
2. 楽天市場(https://www.rakuten.co.jp)にアクセス
3. ブラウザを閉じる
という操作を記述すると下の通りになります。
import time
from selenium import webdriver
from selenium.webdriver.chrome.service import Service
service = Service(executable_path='C:\\user\\Desktop\\chromedriver-win64\\chromedriver.exe') # chromedriverの設定
driver = webdriver.Chrome(service=service) # ブラウザを開く
driver.get(url='https://www.rakuten.co.jp') # URLにアクセス
time.sleep(3) # 3秒間待機
driver.quit() # ブラウザを閉じる
実行するとブラウザが開いて、楽天市場のページが表示され、しばらくするとブラウザが閉じると思います。
解説していきます。
まず最初の3行、
import time
from selenium import webdriver
from selenium.webdriver.chrome.service import Service
これはインストールしたパッケージを使いますよというコードです。
import timeはこの後に出てくるtime.sleepのために書いています。
service = Service(executable_path='C:\\user\\Desktop\\chromedriver-win64\\chromedriver.exe')
はダウンロードしたchromedriverの設定です。
'C:\\user\\Desktop\\chromedriver-win64\\chromedriver.exe'の部分に、
ダウンロードしたchromedriverのフォルダ「chromedriver-win64」の中にchromedriver.exeがあるのでそこまでのパスを記述します。
そして、
driver = webdriver.Chrome(service=service)
でブラウザを開き、
driver.get(url='https://www.rakuten.co.jp')
で楽天市場(https://www.rakuten.co.jp)にアクセスします。
time.sleep(3)は3秒間待機するコードです。
time.sleepしないとすぐにブラウザが閉じて確認できないので書いているだけです。
最後に、
driver.quit()
でブラウザを閉じます。(実際はdriver.quit()しなくてもプログラム終了と同時にブラウザは閉じます)
続いて、ブラウザにオプション設定ができるのですが、自動化のプログラム作成でよく使用するものを紹介します。
まずはヘッドレスモードです。
これはブラウザを非表示、バックグラウンドで起動するという設定です。
先ほどのコードにヘッドレスモードのオプション設定を加えると下のようになります。
import time
from selenium import webdriver
from selenium.webdriver.chrome.service import Service
options = webdriver.ChromeOptions()
options.add_argument('--headless') # ヘッドレスモード
service = Service(executable_path='C:\\user\\Desktop\\chromedriver-win64\\chromedriver.exe') # chromedriverの設定
driver = webdriver.Chrome(service=service, options=options) # ブラウザを開く
driver.get(url='https://www.rakuten.co.jp') # URLにアクセス
time.sleep(3)
driver.quit() # ブラウザを閉じる
options = webdriver.ChromeOptions()
がオプション設定するためのコードで、
options.add_argument('--headless')
がヘッドレスモードの設定になります。
そして、ブラウザを開くコードが、
driver = webdriver.Chrome(service=service)
↓
driver = webdriver.Chrome(service=service, options=options)
になっています、オプション設定を適用してブラウザを開くという書き方ですね。
これを実行すると、画面上はなにも変化はありませんが、バックグラウンドでブラウザが起動してURLにアクセスして閉じています。
もう1つ、よく使用するオプション設定は、ブラウザを開いたまま終了するというものです。
これはプログラム作成時、動作確認しながら作成を進めるのですが、エラーなどがあった場合、自動でブラウザが閉じてしまうとエラーの原因が分からなくなってしまうので、それを防止するためにブラウザを閉じないというオプション設定をします。プログラムが完成してしまえば不要なオプションになります。
ブラウザを開いたまま終了する設定は下のように書きます。
from selenium import webdriver
from selenium.webdriver.chrome.service import Service
options = webdriver.ChromeOptions()
options.add_experimental_option('detach', True) # ブラウザを開いたまま終了する
service = Service(executable_path='C:\\Users\\user\\Desktop\\python\\env_note\\chromedriver-win64\\chromedriver.exe') # chromedriverの設定
driver = webdriver.Chrome(service=service, options=options) # ブラウザを開く
driver.get(url='https://www.rakuten.co.jp') # URLにアクセス
options.add_experimental_option('detach', True)
がブラウザを開いたまま終了する設定のコードになります。
開いたまま終了するので、
import time
time.sleep(3)
driver.quit()
は記述していません。
これを実行すると、プログラムが終了してもブラウザは開いたまま残ります。
このように必要なオプション設定をしながらブラウザ操作のプログラムを作成していきます。
忘備録
この記事が気に入ったらサポートをしてみませんか?