100日後にエンジニアになるキミ - 74日目 - プログラミング - スクレイピングについて5

昨日までのはこちら

[100日後にエンジニアになるキミ - 70日目 - プログラミング - スクレイピングについて](https://qiita.com/otupy/items/f53e2e7d16adf80b5acf)

[100日後にエンジニアになるキミ - 66日目 - プログラミング - 自然言語処理について](https://qiita.com/otupy/items/5828ac7450c5ba8d6931)

[100日後にエンジニアになるキミ - 63日目 - プログラミング - 確率について1](https://qiita.com/otupy/items/0196897ae4d2134794fa)

[100日後にエンジニアになるキミ - 59日目 - プログラミング - アルゴリズムについて](https://qiita.com/otupy/items/f1a5e81633b868f3b5ed)

[100日後にエンジニアになるキミ - 53日目 - Git - Gitについて](https://qiita.com/otupy/items/0abaad82a7f3fea73f1f)

[100日後にエンジニアになるキミ - 42日目 - クラウド - クラウドサービスについて](https://qiita.com/otupy/items/d1765f1541a104ed6133)

[100日後にエンジニアになるキミ - 36日目 - データベース - データベースについて](https://qiita.com/otupy/items/7af17635d576677606dc)

[100日後にエンジニアになるキミ - 24日目 - Python - Python言語の基礎1](https://qiita.com/otupy/items/6d1e5453f530e07b7aec)

[100日後にエンジニアになるキミ - 18日目 - Javascript - JavaScriptの基礎1](https://qiita.com/otupy/items/2f71d5f9c754b29d9555)

[100日後にエンジニアになるキミ - 14日目 - CSS - CSSの基礎1](https://qiita.com/otupy/items/61a97863f6df14171994)

[100日後にエンジニアになるキミ - 6日目 - HTML - HTMLの基礎1](https://qiita.com/otupy/items/cd2315dcb38671cfded0)

今回もスクレイピングの続きです。

あらかたスクレイピングの原理は前回までで終わっていますので
今日はSeleniumのお話です。

## Seleniumについて

`Selenium`はWEBブラウザの操作を自動化するためのフレームワークソフトウェアです。

`Selenium`を使うことで、Python`requests`ライブラリ単体で行う
スクレイピングでは取得できない情報も取得できるようになります。

では取得できない情報とは何でしょうか？

通常の`requests`ライブラリではgetメソッドなどで取得できる情報はHTMLのソースになります。

その要素の一部がJavascriptでレンダリングするように書かれている場合
Javascriptが働かないとデータとして反映されません。

そのためJavascriptでで動的に生成される要素は`requests`ライブラリでは
取得することはできません。

`Selenium`はWEBブラウザを動かしてデータを取得しに行くため、通常のブラウザでアクセスするのと何ら変わりません。Javascriptも働きレンダリングされたデータを取得できます。

### Seleniumを動かすのに必要なもの

PCなどで`Selenium`を動かすのに必要なのは以下の3つです。

**WEBブラウザ**
Chrome, Firefox, Opera など

**WebDriver**
ブラウザを操作するためのソフトウェア

**Selenium**
WebDriverと連携してプログラムからブラウザを操作するライブラリ

### 各種ツールのインストール

インストール方法は以下のようになります。

**WEBブラウザのインストール**
各種ブラウザのダウンロードサイトからダウンロードしてインストールを行う

[Google Chrome](https://www.google.com/chrome/)

[Firefox](https://www.mozilla.org/ja/firefox/new/)

[Opera](https://www.opera.com/ja/download)

**WebDriverのダウンロード**
WebDriverはインストールは必要なく、ダウンロードして配置するだけで動作します。
ダウンロード後はプログラムから見て近いディレクトリなどに配置しておきます。

ドライバーはブラウザのバージョンアップとともに変更されるので、都度バージョンに合わせてダウンロードを行います。

[Google Chrome](https://chromedriver.chromium.org/downloads)

[Firefox](https://github.com/mozilla/geckodriver/releases)

[Opera](https://github.com/operasoftware/operachromiumdriver/releases)


**Seleniumのインストール**
Pythonでのインストール方法は下記です。

```shell
pip install selenium
```

### Seleniumを動かす

`Selenium`を動かすまでの手順としては

1.ブラウザのインストール
2.WebDriverのダウンロードと配置
3.Seleniumのインストール
です。

ここでは`Selenium`から`Google Chrome`を操作してみましょう。

```python
from selenium import webdriver

# ドライバー設定
chromedriver = "ドライバーのフルパス"
driver = webdriver.Chrome(executable_path=chromedriver)

driver.get('アクセス先のURL')
```

これを実行するとブラウザが立ち上がります。

立ち上げるブラウザが`Google Chrome`なので`webdriver.Chrome`を使っています。
ブラウザによって対応するメソッドが変わります。
Firefox:`webdriver.Firefox`
Opera:`webdriver.Opera`

`executable_path`にはWebDriverのパスを書くのですが
フルパス(絶対パス)でないと認識しないようです。浅目の階層にwebdriverを置いておきましょう。

ここまででSeleniumを使ってブラウザを起動できたのではないでしょうか?

次回はここからブラウザの操作方法に入ります。

## まとめ

seleniumを使うと通常のスクレピング手法では
取得できない情報も簡単に取得できるようになるので便利です。

データが取得できなくて困っている方はseleniumを試してみましょう。

君がエンジニアになるまであと26日

## 作者の情報
乙pyのHP：
http://www.otupy.net/

Youtube：
https://www.youtube.com/channel/UCaT7xpeq8n1G_HcJKKSOXMw

Twitter：
https://twitter.com/otupython