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()
ブラウザを閉じて、リソースを解放します。
おわりに
Seleniumを使うことで、動的なウェブサイトからのデータ取得が容易になります。今回の例では、Googleの日本サイトにアクセスしてページソースを取得しましたが、他のウェブサイトでも同様の手法を使ってデータを取得できます。ぜひ、試してみてください。
この記事が気に入ったらサポートをしてみませんか?