Colaboratory で Selenium を利用する

まとめ

更新版(2024/3版)はこちら

Colaboratory を利用して、Selenium でスクレイピングを行うサンプルです。

Selenium + ChromeDriver によるウェブサイトの取得方法

動的なウェブサイトスクレイピングするには、JavaScript が実行された状態で取得しなければならず、Selenium と ChromeDriver にて実現する事が可能です。このサンプルでは、Selenium を利用するところまでを実現します。

Selenium をインストールします。Colaboratory では頭に「!」をつけるとコマンドとして扱われます。

!pip install selenium

ChromeDriver をインストールします。

!apt-get update
!apt install chromium-chromedriver

Selenium を利用してウェブサイトの取得を行い、Aタグのリンク一覧を抽出してみます。

from selenium import webdriver
from selenium.webdriver.common.by import By

# 対象URLを指定
url = "http://wp.apiless.com/"

# driver のオプション設定
options = webdriver.ChromeOptions()
options.add_argument('--headless') # ヘッドレスモードを利用
options.add_argument('--no-sandbox') # sandbox 機能を利用しない
options.add_argument('--disable-dev-shm-usage') # /dev/shm を利用しない (メモリ不足対策)

# オプションを指定してブラウザを立ち上げます
browser = webdriver.Chrome('chromedriver',options=options)

# 対象URLのコンテンツを取得
browser.get(url)

# コンテンツからaタグのリストを作成
tags = browser.find_elements(By.TAG_NAME, "a")

# リンク先のhref属性を処理する
for tag in tags:
  print(tag.get_attribute("href")) 

# 終了します
browser.quit()

実行結果

Colaboratory の利用再開

Colaboratory は時間が経つとリセットされます。コードは残りますが、インストールしたソフトウェアはリセットされますので、再度実行してインストールする必要があります。