Seleniumを使ったウェブスクレイピング入門

はじめに

ウェブスクレイピングは、ウェブサイトからデータを自動で取得する手法です。Seleniumを使うことで、ブラウザを自動操作し、動的なウェブサイトからデータを取得することができます。今回は、SeleniumとBeautifulSoupを使ってGoogleの日本サイトにアクセスし、ページのソースコードを解析する方法をご紹介します。

必要なライブラリのインストール

まずは、必要なライブラリをインストールしましょう。

pip install selenium
pip install beautifulsoup4

基本コードの説明

以下は、Seleniumを使ってGoogleの日本サイトにアクセスし、そのページソースをBeautifulSoupで解析するためのコードです。

from selenium import webdriver
from bs4 import BeautifulSoup

# アクセスしたいURL
url = "https://www.google.co.jp/"

# Chromeのオプションを設定
options = webdriver.ChromeOptions()
options.add_argument('--headless')  # ヘッドレスモードを有効にする

# WebDriverの初期化
driver = webdriver.Chrome(options=options)

# WebDriver検出回避のためのJavaScriptを実行
driver.execute_script("""delete Object.getPrototypeOf(navigator).webdriver;""")

# 指定したURLにアクセス
driver.get(url)

# ページソースを取得し、BeautifulSoupで解析
soupsrc = BeautifulSoup(driver.page_source, 'html.parser')

# ブラウザを閉じる
driver.close()

コードの詳細説明

URLの指定

url = "https://www.google.co.jp/"

ここでは、Googleの日本サイトにアクセスするためのURLを指定しています。

Chromeのオプション設定

options = webdriver.ChromeOptions()
options.add_argument('--headless')
  • ヘッドレスモードを有効にすることで、ブラウザのGUIを表示せずに操作します。これにより、バックグラウンドでの処理が可能になります。

WebDriverの初期化

driver = webdriver.Chrome(options=options)

設定したオプションを使用して、Chromeブラウザを起動します。
WebDriver検出回避

driver.execute_script("""delete Object.getPrototypeOf(navigator).webdriver;""")

一部のウェブサイトはSeleniumを検出してブロックすることがあります。これを回避するために、navigatorオブジェクトのwebdriverプロパティを削除します。

指定したURLにアクセス

driver.get(url)

指定したURLのページを読み込みます。
ページソースの取得とBeautifulSoupでの解析

soupsrc = BeautifulSoup(driver.page_source, 'html.parser')

ページのHTMLソースを取得し、BeautifulSoupを使って解析します.

ブラウザの閉じる

driver.close()
  1. ブラウザを閉じて、リソースを解放します。

おわりに

Seleniumを使うことで、動的なウェブサイトからのデータ取得が容易になります。今回の例では、Googleの日本サイトにアクセスしてページソースを取得しましたが、他のウェブサイトでも同様の手法を使ってデータを取得できます。ぜひ、試してみてください。

この記事が気に入ったらサポートをしてみませんか?