Skip to content

SeleniumでWebスクレイピング

Seleniumを使ったWebスクレイピング

前回の記事では、Seleniumの基本的な使い方について説明しました。今回は、Seleniumを使ったWebスクレイピングの方法について詳しく見ていきましょう。

Webスクレイピングとは、Webサイトから情報を自動的に収集することです。Seleniumを使えば、ブラウザの自動操作によってWebページの情報を抽出することができます。

たとえば、Yahoo JapanのTOP企業の株価を一覧で取得するようなスクレイピングが考えられます。ここでは、そのサンプルコードを紹介しながら、Seleniumを使ったWebスクレイピングの基本的な流れを解説していきます。

Webスクレイピングの基本的な流れ

Seleniumを使ったWebスクレイピングの基本的な流れは以下の通りです。

  1. ブラウザのインスタンスを作成する
  2. 対象のWebページにアクセスする
  3. ページ上の要素を特定し、情報を抽出する
  4. 抽出した情報を保存または加工する
  5. ブラウザを終了する

これらの流れに沿って、Yahoo Japanの株価一覧を取得するサンプルコードを見ていきましょう。

サンプル: Yahoo JapanのTOP企業の株価一覧を取得する

from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
import csv
# Chromeドライバーの設定
driver = webdriver.Chrome()
# Yahoo Japanの株価ページにアクセス
driver.get("https://finance.yahoo.co.jp/")
# TOPの企業リストを取得する
top_companies = WebDriverWait(driver, 10).until(
EC.presence_of_all_elements_located((By.CSS_SELECTOR, ".topPickupItem a"))
)
# 株価情報を格納するリスト
stock_data = []
# 企業ごとに株価情報を取得
for company in top_companies:
# 企業名を取得
company_name = company.text
# 企業ページにアクセス
company.click()
# 株価情報を取得
stock_price = WebDriverWait(driver, 10).until(
EC.presence_of_element_located((By.CSS_SELECTOR, ".currentPrice"))
).text
# 株価情報を格納
stock_data.append({
"company_name": company_name,
"stock_price": stock_price
})
# 元のページに戻る
driver.back()
# CSV形式で保存
with open("yahoo_stock_prices.csv", "w", newline="") as f:
fieldnames = ["company_name", "stock_price"]
writer = csv.DictWriter(f, fieldnames=fieldnames)
writer.writeheader()
for row in stock_data:
writer.writerow(row)
# ブラウザを終了
driver.quit()

このサンプルコードでは、以下の流れで Yahoo Japanの株価情報を取得しています。

  1. Chromeドライバーのインスタンスを作成し、Yahoo Japanの株価ページにアクセスします。
  2. TOPの企業リストを取得します。
  3. 企業ごとに、企業ページにアクセスし、株価情報を取得します。
  4. 取得した株価情報をリストに格納します。
  5. 最後に、リストの内容をCSVファイルに書き出します。
  6. ブラウザを終了します。

ここでのポイントは以下の通りです。

  • WebDriverWaitを使って、ページ要素が表示されるのを待機している
  • presence_of_all_elements_locatedpresence_of_element_locatedにより、要素の存在を確認している
  • 企業ページにアクセスした後、driver.back()で元のページに戻っている
  • CSVファイルに書き出すときは、csv.DictWriterを使って辞書形式で出力している

このサンプルでは、Yahoo Japanの株価ページからTOPの企業情報を取得していますが、同様の方法でさまざまなWebサイトの情報を収集することができます。

Webスクレイピングの応用

Webスクレイピングには、さまざまな応用が考えられます。たとえば:

  • 商品価格の自動比較
  • ニュースや口コミの収集
  • SNSの投稿データの収集
  • 企業情報や財務データの収集

などが代表的な用途です。

Seleniumを使えば、ブラウザの自動操作によって、これらの情報を効率的に収集することができます。 ただし、Webサイトのサービス利用規約に反しないよう注意が必要です。著作権や個人情報保護など、法的な問題にも十分気をつける必要があります。

まとめ

この記事では、Seleniumを使ったWebスクレイピングの方法について解説しました。Yahoo Japanの株価一覧を取得するサンプルコードを通して、Webスクレイピングの基本的な流れを学んでいただきました。

Webスクレイピングには、さまざまな応用が考えられますが、サイトの利用規約や法的な問題には十分注意が必要です。 Seleniumを使えば、ブラウザの自動操作によって効率的にWebデータを収集できるので、業務効率化などに活用できるでしょう。