Python+Selenium+Beautiful Soup4のwebスクレイピング環境構築方法
- 公開日:2018/10/19
- 更新日:2021/03/31
- 投稿者:n bit
PythonでSeleniumとBeautiful Soup4を使ったウェブスクレイピング用の環境構築方法を解説。この環境で今日からウェブスクレイピングを始めることができます。Seleniumを使ってブラウザ操作も行うため動的なページでもスクレイピングすることが可能です。
この記事は約 分で読めます。(文字)
Python + Selenium + Beautiful Soup4のウェブスクレイピング環境構築方法
pyenv環境にインストールしたPythonにSeleniumとBeautiful Soup4、lxmlをインストールしていきます。
pyenv環境にPythonのインストールが完了していない方は下記のページを参考にしてインストールしておいてください。
pyenvを使ったPyhtonのローカルプログラミング環境構築【Mac編】
Macのローカル環境にpyenvを利用してPythonのプログラミング環境を構築する方法を解説。pyenvを利用することでPythonのバージョンを複数の環境で…するパッケージごとに構築環境を切り分けと言った要件に対して容易に対応できます。
seleniumのインストール
pipでインストールできる最新バージョンのseleniumを検索します。
$ pip search selenium
出力結果
・
・
・
selenium (3.14.1) - Python bindings for Selenium
・
・
・
最新バージョンのseleniumをインストールします。
$ pip install selenium
インストールメッセージ
Collecting selenium
Using cached https://files.pythonhosted.org/packages/b0/c9/52390baa8d6b65c3e3b89f522c3a0fcf58f2b4faf37893ef9d97cddde699/selenium-3.14.1-py2.py3-none-any.whl
Requirement already satisfied: urllib3 in ./.pyenv/versions/3.6.6/lib/python3.6/site-packages (from selenium) (1.23)
Installing collected packages: selenium
Successfully installed selenium-3.14.1
「Successfully installed」と表示されていればインストール成功です。念のため正しくインストールされているかリストでも確認しておきます。
$ pip list
出力結果
Package Version
------------------- ----------
・
・
・
selenium 3.14.1
beautifulsoup4のインストール
pipでインストールできる最新バージョンのbeautifulsoup4を検索します。
$ pip search beautifulsoup4
出力結果
・
・
・
beautifulsoup4 (4.6.3) - Screen-scraping library
・
・
・
beautifulsoup4をインストールします。
$ pip install beautifulsoup4
インストールメッセージ
Collecting beautifulsoup4
Using cached https://files.pythonhosted.org/packages/21/0a/47fdf541c97fd9b6a610cb5fd518175308a7cc60569962e776ac52420387/beautifulsoup4-4.6.3-py3-none-any.whl
Installing collected packages: beautifulsoup4
Successfully installed beautifulsoup4-4.6.3
「Successfully installed」と表示されていればインストール成功です。念のため正しくインストールされているかリストでも確認しておきます。
$ pip list
出力結果
Package Version
------------------- ----------
・
・
・
beautifulsoup4 4.6.3
lxmlのインストール
pipでインストールできる最新バージョンのlxmlを検索します。
$ pip search lxml
出力結果
・
・
・
lxml (4.2.5) - Powerful and Pythonic XML processing library combining libxml2/libxslt with the ElementTree API.
・
・
・
lxmlをインストールします。
$ pip install lxml
インストールメッセージ
Collecting lxml
Downloading https://files.pythonhosted.org/packages/e4/e4/75453295abd6dcd8f7b48c1eb092ce2c23c34ae08ca7acc8c42de35a5a78/lxml-4.2.5-cp36-cp36m-macosx_10_6_intel.macosx_10_9_intel.macosx_10_9_x86_64.macosx_10_10_intel.macosx_10_10_x86_64.whl (8.7MB)
100% |████████████████████████████████| 8.7MB 2.3MB/s
Installing collected packages: lxml
Successfully installed lxml-4.2.5
「Successfully installed」と表示されていればインストール成功です。念のため正しくインストールされているかリストでも確認しておきます。
$ pip list
出力結果
Package Version
------------------- ----------
・
・
・
lxml 4.2.5
Selenium環境用 ChromeDriverのインストール
Selenium環境で利用するブラウザにはGoogle Chromeを利用するためChromeDriverをインストールしておきます。
まだHomebrewのセットアップが完了していない方は下記ページをご参照の上インストールしておいてください。
Homebrewの基本とインストール方法・使い方
MacでPythonの環境構築や各種パッケージのインストールなど頻繁に利用されるHomebrew。Homebrewの基本的な知識や役割に関する情報とインストール…について解説しています。Macで各種環境構築を行うときには必須となるものです。
Homebrewをアップグレードしておきましょう。
$ brew tap homebrew/cask
Chrome Driverをインストールします。
$ brew cask install chromedriver
これでChromeDriverのインストール作業完了です。
ChromeDriverのインストール方法の詳細に関しては下記のページで解説しています。
Selenium環境用 ChromeDriverのインストールとアップデート方法
ブラウザを起動することなく操作可能なPhantomJSのメンテナーVitalyさんが引退するためSeleniumによるサポートが終了することになりました。今後は…ッドレスバージョン推奨となったためインストールやアップデート方法を解説します。
これで必要となる関連パッケージのインストール作業全て終了です。
ウェブスクレイピング環境の動作テスト
設定した環境が正しく動作するかテストしておきましょう。テストには下記のテスト用コードを利用します。
「Python + Selenium」版と「Python + Beautiful Soup4」版を用意していました。いずれもリストで指定URLページの['日付', 'url', 'タイトル', 'ディスクリプション']を返します。
テスト用コード:Python + Selenium のwebスクレイピング
Python + Selenium で行うwebスクレイピング用のテストコードです。実行するとGoogle Chromeが自動で起動し指定URLのページがブラウザを通してスクレイピングされます。
url = "https://・・・/" にスクレイピングしたいページのURLをセットしてください。
import requests
from selenium import webdriver
from selenium.webdriver.common.by import By
from datetime import date
class Detail:
def __init__(self):
pass
def get_all(self, url):
global driver
chrome_options = webdriver.ChromeOptions()
driver = webdriver.Chrome()
driver.get(url)
result = []
result.append(date.today())
result.append(url)
title_text = driver.title
result.append(title_text)
description_text = driver.find_element_by_xpath("//meta[@name='description']").get_attribute('content')
result.append(description_text)
return result
if __name__ == "__main__":
url = "https://・・・/"
detail = Detail()
result = detail.get_all(url)
print(result)
# ['日付', 'url', 'タイトル', 'ディスクリプション']
実行方法
上記のコードを「test_sel.py」と言う名前で任意のディレクトリに保存します。
ファイルを保存したディレクトリにCDコマンドを使って移動します。
$ cd 保存先のディレクトリのパス
保存ファイルをPythonで実行してください。
$ python test_sel.py
指定URLページのタイトル、ディスクリプションに合わせて実行した日付と指定したURLがリスト形式で表示されていれば正しく動作しています。
['日付', 'url', 'タイトル', 'ディスクリプション']
テスト用コード:Python + Beautiful Soup4 のwebスクレイピング
Python + Beautiful Soup4 で行うwebスクレイピング用のテストコードです。実行すると指定URLのページを直接スクレイピングします。
url = "https://・・・/" にスクレイピングしたいページのURLをセットしてください。
import requests
from bs4 import BeautifulSoup
from datetime import date
class Detail:
def __init__(self):
pass
def get_all(self, url):
result = []
res = requests.get(url)
soup = BeautifulSoup(res.content, "lxml")
result.append(date.today())
result.append(url)
title_text = soup.head.title.text.strip()
result.append(title_text)
description_text = soup.head.find("meta", attrs={"name": "description"}).attrs['content']
result.append(description_text)
return result
if __name__ == "__main__":
url = "https://・・・/"
detail = Detail()
result = detail.get_all(url)
print(result)
# ['日付', 'url', 'タイトル', 'ディスクリプション']
実行方法
上記のコードを「test_bs4.py」と言う名前で任意のディレクトリに保存します。
ファイルを保存したディレクトリにCDコマンドを使って移動します。
$ cd 保存先のディレクトリのパス
保存ファイルをPythonで実行してください。
$ python test_bs4.py
指定URLページのタイトル、ディスクリプションに合わせて実行した日付と指定したURLがリスト形式で表示されていれば正しく動作しています。
['日付', 'url', 'タイトル', 'ディスクリプション']
今日のdot
Python + Selenium + Beautiful Soup4 でwebスクレイピングの環境構築を行っておけば静的なページだけではなく動的なページにも対応可能になります。柔軟なwebスクレイピングが行えるようになりますので両方の環境を使えるようにセットアップしておきましょう。
【フリーランス向けの完全無料Pythonプログラミング講座】
dot blogではこの記事以外にも完全無料でフリーランス向けのPythonプログラミング講座を公開中です。フリーランスとして活躍し稼ぐための強力な武器となりますよ。
Python入門講座【無料のプログラミング学習講座】
最近特に注目度が高くなってきているプログラミング言語Python。転職、フリーランス、独立・起業を検討中、日々の業務が忙しい社会人等は今こそ身に付けておきたいスキルの1つ。初心者向けにやさしいプログラミング学習内容のPython入門講座を無料で公開。