seleniumでスクレイピング


動的に書かれたサイトをseleniumでスクレイピング

JS等で書かれたサイトだとただBeautifulSoupとかでスクレイピングしようとしても出来ない場合があります。
そんな場合に使えるのがseleniumです。

chrome driverを入手

まずchrome のバージョンを調べます。

(Macの場合)
1. chromeを開いた状態で、画面左上の「chrome」をクリック
2. 「Google chromeについて」をクリック
3. 「設定-Chromeについて」というページが開かれるので、そこに表示される
  バージョン: 8?.〜〜〜〜という部分を確認します。

ダウンロードページでChrome Driverを入手します。

ダウンロードページ で、

以下の部分から、上で調べたバージョンに合致するchrome driverをダウンロードします。
(ページリンク先でOSを選択します。)

使い方

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

url="~~~~~~"#ここに開きたいURL
options = Options()
options.add_argument('--headless') #ヘッドレスモードを有効
Driver_path="~~~~~~" #ダウンロードしたchromeドライバーを置いた場所を指定
driver = webdriver.Chrome(Driver_path,options=options)
driver.get(url)
time.sleep(2)
html = driver.page_source.encode('utf-8')
soup = BeautifulSoup(html, 'lxml')
#この後は普通にBeautiful Soupの文法通り使える。

optionをつけることによって、driver.getするたびにページが開かれてしまうことを防いでいます。
(これによって、処理速度が多少早くなります。)

参考

Seleniumを安定稼働させるために行うべき3つの設定(Headlessモードにも対応)