非IT企業に勤める中年サラリーマンのIT日記

非IT企業でしかもITとは全く関係ない部署にいる中年エンジニア。唯一の趣味がプログラミングという”自称”プログラマー。

【Python】selenumライブラリでChromeを起動する(Webスクレイピングの準備)

   

Pythonでスクレイピングを行う場合、Javascriptで生成されたWebページが増えてきたこともあり、requestsライブラリだけでは捕まえられないケースが多くなってきました。

これを解決するのにselenumライブラリを使ってブラウザを操作することになります。

今回はselenumライブラリのインストールからブラウザの起動までを説明したいと思います。

Seleniumのインストール

まずはpipコマンドでSeleniumライブラリをインストールします。pipコマンドは以下の通り。

pip install selenium

 

Chromeのバージョン確認

次にChromedriverをインストールする必要があるのですが、ダウンロードファイルがバージョンごとに異なるため、あらかじめChromeのバージョンを確認する必要があります。

ブラウザメニューの「ヘルプ」ー「Google Chromeについて」を選択します。

 

すると、以下のようにバージョンが確認できます。これを控えておきましょう。今回は「110.0.5481.100」でした。

 

Chromedriverのインストール

Chromedriverをインストールします。以下のサイトに行きましょう。

https://chromedriver.chromium.org/downloads

 

先ほど控えたChromeのバージョンに近いバージョンを探します。見つかったらクリックしましょう。

 

以下のようなページが現れるのでOSに合ったリンクをクリックしてダウンロードします。

ダウンロードして解凍した結果、2ファイルありました。これをPythonプログラムと同じフォルダ内に移動すれば準備官僚です。

 

ソースコード

ソースコードはこちら。まずは単純にChromeブラウザを立ち上げるためのプログラムです。最後のinput文は処理を一旦止めるためのもので、これがないとプロセス終了とともにブラウザもたち下がってしまうからです。

from selenium import webdriver

driver = webdriver.Chrome('chromedriver')
print(driver.title)

# プロセスを一旦停止するため
input('press any key to finish :')
 

 

実行結果

実行結果は以下の通りです。ブラウザに「Chromeは自動テストソフトウェアによって制御されています」と表示されます。

 

URLを指定してブラウザを起動する

今度はURLを指定してページを開いてみましょう。ソースコードは以下のとおりです。 Yahoo!Japanのページを開いてみます。

from selenium import webdriver

driver = webdriver.Chrome('chromedriver')
driver.get('https://www.yahoo.co.jp/')

input('press any key to finish :')
 

 

結果はご覧の通りです。

 

ブラウザをバックグランドで起動する方法

最後にブラウザをバックグランドで起動するようにします。目的はWebスクレイピングなのでブラウザがいちいち開くのは余計です。

その場合はChromeDriverのChromeOptionsクラスを利用し、起動時のオプションにheadlessを追加します。バックグランド起動でうまく言ったかわからないためにページタイトルを出力させます。

from selenium import webdriver
from selenium.webdriver.chrome.options import Options

options = Options()
options.add_argument('--headless')
driver = webdriver.Chrome('chromedriver',options=options)
driver.get('https://www.yahoo.co.jp/')
print(driver.title)

input('press any key to finish :')

 

実行結果は以下の通りうまく行きました。

 

スポンサーリンク

 - Python