Python_HTML解析
HTMLを取得する。
urllibを使ってHTMLを取得することができます。
Python3ではurllib3がurllibに統合されました。
HTMLの取得
urllib.request.urlopen()でHTMLを取得できます。
文字コードをUTF-8にする場合には、「decode('UTF-8')」を呼びます。
#!/usr/bin/env python
# -*- coding: UTF-8 -*-
# vim:fileencoding=utf-8
# coding=utf8
import urllib.request
url = "http://capm-network.com"
req = urllib.request.urlopen(url)
html = req.read().decode('UTF-8')
req.close()
print(html)
HTML タグの情報を取得・解析する
PythonでHTMLを解析する場合、「HTMLParser」を利用することが一般的です。
しかしながら、その他に使い勝手のよいHTML解析ツールがあるのでそれらを利用しても便利です。
beautifulsoup4を利用する。
インストールします。
pip install beautifulsoup4
BeautifulSoup()関数で解析を行います。
#!/usr/bin/env python
# -*- coding: UTF-8 -*-
# vim:fileencoding=utf-8
# coding=utf8
import urllib.request
from bs4 import BeautifulSoup
url = "http://capm-network.com"
req = urllib.request.urlopen(url)
html = req.read().decode('UTF-8')
req.close()
soup = BeautifulSoup(html)
print(soup.title.string) # CapmNetwork
print(soup.find('a')) # <a href="/">Capm Network</a>
要素の検索はfind()またはfind_all()を用います。
soup.find('a') # 最初に見つかったリンク先を取得します。
soup.find_all('a') # 全てのリンク先を取得します。
全てのリンク先を表示する場合、下記のように解析すると便利です。
for link in soup.find_all('a'):
print(link.get('href'))
idやクラスでも検索できます。クラスは「class_」なので注意が必要です。
soup.find(id='footer')
soup.find_all(class_='nav')
関連ページ
- Python
- Python_シェルコマンドを実行する
- Python_HTML解析
- Python_jsonファイルの扱い
- Python_urllibでHTTPリクエスト
- Python_マークルツリーを実装する