ホーム >  Python >  Beautiful Soup4のパーサ(構文解析器)

投稿日:   |  最終更新日:

Beautiful Soup4のパーサ(構文解析器)

PythonWebスクレイピング

Pythonでスレイピングを行います。Beautiful Soup4のパーサを使ってWebサイトを解析します。

Beautiful Soup4のパーサを使う

前回は、Beautiful Soup4でWebページの解析をしました。Beautiful Soupとは、HTMLやXMLの内容を解析するためのPythonライブラリですが、パーサ(構文解析器)を切り替えることにより、より正確な解析ができます。Beautiful Soup4は標準で「html.parser」を指定しますが、Pythonパッケージを追加インストールすることにより他のパーサも利用できます。

前提

①仮想環境、本番環境どちらでも構いませんが、CentOS7にPython3とvenvがインストールされているものとします。VPSに作った方法ですが、共通ですので以下をご参考に。

ConoHaのVPSにPython3環境を作る

②スクレイピングに使用するPythonパッケージ(Requests、Beautiful Soup4)をインストールします。

Pythonのウェブスクレイピング環境を作る(Requests、Beautiful Soup4)

ホスト環境

ホスト環境はUbuntuですが、WindowsでもMacでもOKです。

OS Ubuntu 16.04.1 LTS 64bit
Virtualbox 5.1
Vagrant 1.9.5

ゲスト環境

OS CentOS 7.1.1503
Python 3.6.1
pip 9.0.1
Webサーバ Apache/2.4.6 (CentOS)
mod_wsgi 4.5.17

lxml、html5のパーサパッケージをインストール

①venvの仮想環境を起動します。

. env/bin/activate

②lxml、html5libパッケージをインストールします。

pip install lxml
pip install html5lib

パーサを使う

①venvの仮想環境から、そのままコマンドでpythonの対話モードを起動します。

python

②以下のコードを記述して実行します。RequestsオブジェクトのcontextにHTMLが入ります。そのデータを元にBeautifulSoupオブジェクトを生成します。なお、パーサは標準の「html.parser」を使います。

>>> import requests
>>> from bs4 import BeautifulSoup
>>> r = requests.get('https://hombre-nuevo.com/python/python0060/')
>>> soup = BeautifulSoup(r.content, 'html.parser')

高速に解析したり、正しいhtml5を解析したい場合は、他のパーサを指定します。

パーサ 指定方法 特徴
Python HTMLパーサ BeautifulSoup(markup, ‘html.parser’) 他のライブラリ不要。標準のパーサ。
lxml HTMLパーサ BeautifulSoup(markup, ‘lxml’) 高速。
lxml XMLパーサ BeautifulSoup(markup, ‘lxml-xml’) 高速。
html5libパーサ BeautifulSoup(markup, ‘html5lib’) HTML5が生成できるが、遅い。
トラックバック用のURL
プロフィール

名前:イワサキ ユウタ 職業:システムエンジニア、ウェブマスター、フロントエンドエンジニア 誕生:1986年生まれ 出身:静岡県 特技:ウッドベース 略歴 20

最近の投稿
人気記事
カテゴリー
広告