【Selenium】30分で出来るWebスクレイピング【Python初心者】

スクレイピングがやりたくてほぼ初めてPythonを触ったんですが、思いの外簡単に出来てめちゃくちゃ楽しかったので勢いで書いてしまいました。

すぐに試せるのでぜひやってみてください!

 

Pythonのインストール

機械学習やWeb開発に使われるPythonとは?

まずはPythonがインストールされていないと始まらないですね、公式サイトからダウンロードしましょう。

Macの人はHomeBrewでもいいと思います。

$ brew install python3

インストールされているかはバージョンを見ることで確認できます。

$ python --version

おまけにPythonのパッケージ管理ツールであるpipもインストールしてしまいましょう。

$ sudo python get-pip.py

 

Seleniumのインストール

Seleniumとはブラウザを自動操作するためのツールです。

pipを使ってインストールしましょう。

$ pip install selenium

今回はChromeを使いたいので、ChromeDriverも公式サイトからダウンロードしておきます。

あとで参照するのでわかりやすい場所に保存しておいてください。

今回はChromeのヘッドレスブラウザを利用してみようと思うのでGoogle Chrome Canaryもインストールしておいてください。

 

スクレイピングの実装

準備は整ったのでいよいよ実装していきます!

import time
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.chrome.options import Options

# オプションを作成
options = Options()
# Google Chrome Canaryのパスを指定
options.binary_location = '/Applications/Google Chrome Canary.app/Contents/MacOS/Google Chrome Canary'
# ヘッドレスブラウザ指定
options.add_argument('--headless')
# ChromeDriverのパスとオプションをつけてwebdriverを作成
driver = webdriver.Chrome('chromedriverのパス', chrome_options=options)

# Googleを開いてみる
driver.get('https://www.google.co.jp')

# タイトルにGoogleが含まれているのを確認
assert 'Google' in driver.title

# 検索窓を取得
input_elem = driver.find_element_by_name('q')
# キーワードを入力
input_elem.send_keys('Python')
# 検索
input_elem.send_keys(Keys.RETURN)

# 画面切り替わりを待つため適当な時間待つ
time.sleep(2)

assert 'Python' in driver.title

# スクリーンショットを撮る。
driver.save_screenshot('ss.png')

# 検索結果のタイトルとURLを表示する。
for a in driver.find_elements_by_css_selector('h3 > a'):
    print(a.text)
    print(a.get_attribute('href'))

# ブラウザを終了
driver.quit()

上記のプログラムを実行することで、以下のような結果を得ることができます。

scraping

ss

うまくスクレイピングが行われていることが確認できたと思います!

Seleniumのコマンドはこちらのクイックリファレンスから確認できます。

 

ちなみに要素の指定の時に便利なXPathですが、これはChromeの検証モードで確認することができます。

ss2

 

スクレイピングについてはこちらの記事を参考にさせていただきました。