更新:2024/06/09

PythonでのWebスクレイピング:SeleniumとBeautiful Soupの連携

はるか
はるか
seleniumとBeautiful Soupを連携させたい。

ふゅか
ふゅか
動的なページに対応できるもんね!

1. Webスクレイピングとは?

1.1. Webスクレイピングの基本概念

Webスクレイピングとは、インターネット上のウェブサイトからデータを抽出する技術のことを指します。近年、Webスクレイピングはデータ収集の手段として広く利用されており、データ分析やマーケティングリサーチなど、さまざまな分野で重要な役割を果たしています。

はるか
はるか
データ収集に便利な技術。

1.2. SeleniumとBeautiful Soupの概要と利点

PythonはWebスクレイピングに非常に適したプログラミング言語です。その中でもSeleniumとBeautiful Soupは強力なツールです。Seleniumはブラウザを自動操作するためのライブラリで、動的なウェブページのデータ取得に適しています。一方、Beautiful SoupはHTMLやXMLの解析を簡単に行えるライブラリで、静的なウェブページから効率的にデータを抽出できます。今回はSeleniumとBeautiful Soupを連携する方法について解説します。

はるか
はるか
それぞれ得意分野が違うから、うまく使い分けるのがコツ。

2. Seleniumのセットアップと基本操作

2.1. Seleniumのインストール

Seleniumは、ブラウザを自動操作するための強力なライブラリです。まず、Python環境にSeleniumをインストールします。以下のコマンドでインストールが可能です。

pip install selenium
はるか
はるか
まずはインストールから。

2.2. Seleniumの基本操作

基本操作として、ブラウザを開き、特定のURLにアクセスし、ページの要素を操作することができます。以下はその一例です。

from selenium import webdriver
from webdriver_manager.chrome import ChromeDriverManager
from selenium.webdriver.chrome.service import Service
from selenium.webdriver.common.by import By

# ChromeDriverのパスを指定してブラウザを起動
new_driver = ChromeDriverManager().install()

service = Service(executable_path=new_driver)

driver = webdriver.Chrome(service=service)
# 特定のURLにアクセス
driver.get('https://example.com')

# ページのタイトルを取得して表示
print(driver.find_element(By.TAG_NAME,"h1").text)

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

3. Beautiful Soupのインストールと基本操作

3.1. Beautiful Soupのインストール

Beautiful Soupは、HTMLやXMLの解析を簡単に行えるPythonライブラリです。まず、Beautiful Soupを使用するためには、Python環境にインストールする必要があります。以下のコマンドを使用してインストールを行います。

pip install beautifulsoup4

3.2. 基本的な使い方

次に、Beautiful Soupを使って、簡単なHTML解析を行います。以下のコードは、サンプルのHTMLを解析し、タイトル要素を取得して表示する例です。

from bs4 import BeautifulSoup

# サンプルのHTMLを解析
html = """
<h1>Hello, world!</h1>
"""

soup = BeautifulSoup(html, 'html.parser')

# タイトル要素を取得して表示
print(soup.find("h1").string)

4. seleniumとbs4の連携

以下のコードでは、Seleniumを使ってウェブページを取得し、その内容をBeautiful Soupで解析します。

from selenium import webdriver
from webdriver_manager.chrome import ChromeDriverManager
from selenium.webdriver.chrome.service import Service
from bs4 import BeautifulSoup

new_driver = ChromeDriverManager().install()
service = Service(executable_path=new_driver)
driver = webdriver.Chrome(service=service)
driver.get('https://example.com')
html = driver.page_source.encode('utf-8')
driver.quit()


soup = BeautifulSoup(html, 'html.parser')

print(soup.find("h1").string)
はるか
はるか
この方法で、bs4でも動的なページも簡単に解析できる。

4.1. ページソースの取得

driver.page_sourceでseleniumでクロールしたページのHTMLソースを取得することができます。

  • driver.page_sourceは、現在のページのHTMLソースコードを取得します。
  • .encode(‘utf-8’)は、文字エンコーディングをUTF-8に変換します。

4.2. 全体の流れ

  1. 必要なライブラリをインポート。
  2. ChromeDriverをインストール。
  3. WebDriverを初期化して、指定したURLにアクセス。
  4. ページソースを取得し、ブラウザを閉じる。
  5. BeautifulSoupでHTMLを解析。
  6. <h1>タグの内容を抽出して表示。