1. 概要
「BeautifulSoup」とは、その名の通り、「.html」の内容をビューティフルに解析するパーサです。
本ページは、「Python - ウェブスクレイピング」の記事とかぶる部分が多々あります。
なんだかんだは、「Beauful Soup (HTML パーサー) - Wikipedia」をご参照ください。
2. インストール
「pip」でインストールするには。
pip install bs4
もしくは。
pip install beautifulsoup4
「FreeBSD」で、「ports」でインストールするには。
cd /usr/ports/www/py-beautifulsoup
make
make install
オプションは、「DOC」のみなので、つけてもはずしても、あまり影響はありません。
3. 使い方
下記のソースを書いて。
import urllib3
from bs4 import BeautifulSoup
http = urllib3.PoolManager(cert_reqs='CERT_REQUIRED', ca_certs='/パス/証明書.pem')
html = http.request('GET', 'https://freebsd.sing.ne.jp/lang/python/04/12/02.html')
soup = BeautifulSoup(html.data, "html.parser")
print(soup)
実行すると、ほぼ下記のような結果が得られます。
(どうせ、ブラウザで、「ページのソースを表示」すれば得られるものなので、さらしても問題ないのだ)
<!DOCTYPE html>
<html>
<head><link href="https://freebsd.sing.ne.jp/lang/python/04/12/02.html" rel="canonical"/><meta content="Python よく使 うモジュール パーサ BeautifulSouphtml" name="description"/><link href="https://freebsd.sing.ne.jp/lang/python/04/12/02.html" hreflang="ja" rel="alternate"/>
・・・ 以下略 ・・・
「BeautifulSoup」の本領は、上記ではなくて、9行目を。
print(soup.find('title').text)
と書き換えれば、結果が。
Python - よく使うモジュール - パーサ - BeautifulSoup html
となります。
タグの内容を抜き出したりできるのです。
メソッドうまく使い分ければ、コンテンツの分析が細かくできます。
4. xml
「.xml」を「parse」する場合は、最初の引数の2番目を変えるわけですが・・・。
「xml.parser」では、なかった、調べたところでは「lxml-xml」。
import urllib3
from bs4 import BeautifulSoup
http = urllib3.PoolManager(cert_reqs='CERT_REQUIRED', ca_certs='/パス/証明書.pem')
html = http.request('GET', 'https://freebsd.sing.ne.jp/config/rss10.xml')
soup = BeautifulSoup(html.data, "lxml-xml")
print(soup)
上記を実行すると、下記の結果が得られます。
<?xml version="1.0" encoding="utf-8"?>
<!-- generator="FeedCreator 1.8" --><?xml-stylesheet href="http://www.w3.org/2000/08/w3c-synd/style.css" type="text/css"?><rdf:RDF xmlns="http://purl.org/rss/1.0/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:slash="http://purl.org/rss/1.0/modules/slash/">
<channel rdf:about="">
<title>FreeBSD あれこれ</title>
<description>FreeBSD をはじめ OS・サーバ・アプリケーション等の紹介サイト。</description>
<link>https://freebsd.sing.ne.jp/</link>
・・・ 以下略 ・・・