HTML解析 (パーサ)
本項ではPythonで行うHTML解析 (パース)を解説します。取得したHTML文から様々な処理を行うことができます。
7行目で指定URLをオープンし、8行目で取得したHTML文を表示しています。
# -*- coding: utf-8 -*- import urllib2 url = "http://www.python-izm.com/" htmldata = urllib2.urlopen(url) print unicode(htmldata.read(), 'utf-8') htmldata.close()
「build_opener」を使用します。8行目でユーザーエージェント情報を設定してからオープンしています。
# -*- coding: utf-8 -*-
import urllib2
url = 'http://www.python-izm.com/'
opener = urllib2.build_opener()
opener.addheaders = [('User-agent', 'Mozilla/5.0 (Windows; U; Windows NT 5.1; ja; rv:1.9.2.3) Gecko/20100401 Firefox/3.6.3 ( .NET CLR 3.5.30729)')]
htmldata = opener.open(url)
print unicode(htmldata.read(), 'utf-8')
htmldata.close()
opener.close()
「HTMLParser」継承して処理を追加します。下記例では、本サイトのトップページからリンクされているURLの取得を行っています。
# -*- coding: utf-8 -*-
import urllib2
from HTMLParser import HTMLParser
class TestParser(HTMLParser):
def __init__(self):
HTMLParser.__init__(self)
def handle_starttag(self, tagname, attribute):
if tagname.lower() == 'a':
for i in attribute:
if i[0].lower() == 'href':
print i[1]
url = 'http://www.python-izm.com/'
htmldata = urllib2.urlopen(url)
parser = TestParser()
parser.feed(htmldata.read())
parser.close()
htmldata.close()
HTML解析の次はXML解析!
▶応用編:XML解析(パーサ)
