この記事では、Pythonで正規表現を用いてHTMLやXMLをパース(解析)する方法を詳しく解説します。具体的なコード例、その詳細な解説、さらには応用例も含めています。これにより、データ解析やWebスクレイピングなどの作業をより効率的に行うことができます。
正規表現とは?
正規表現(Regular Expression)は、文字列の検索や置換を行うためのパターンを表す式です。特定のルールに基づいて、文字列内の特定の部分を照合したり、抜き出したりします。
正規表現の基本的な構文
Pythonで正規表現を使用するには、`re`モジュールをインポートする必要があります。以下の基本的な関数が提供されています。
- re.match()
- re.search()
- re.findall()
- re.finditer()
- re.sub()
HTMLとXMLの基本
HTML(HyperText Markup Language)とXML(eXtensible Markup Language)は、マークアップ言語と呼ばれ、データを構造化するために使用されます。HTMLはWebページを作成するため、XMLはデータの保存や転送を目的としています。
HTMLとXMLの違い
HTMLはデザインやレイアウトに特化しているのに対し、XMLはデータを構造化することが主な目的です。XMLは自分でタグを定義できるので、より柔軟なデータ表現が可能です。
PythonでのHTML/XMLパースの基本
PythonでHTMLやXMLをパースする方法はいくつかありますが、正規表現を使用すると、高度なフィルタリングや検索が可能です。
[h3]基本的なパースのコード
import re
html_content = "My Page Hello World!"
match = re.search(r'(.*?) ', html_content)
if match:
print("Title tag content:", match.group(1))
このコードでは、`
コードの詳細解説
1. `re.search()`関数は、指定した正規表現パターンが最初にマッチする位置を返します。
2. `r’
3. `match.group(1)`で、正規表現の1つめのカッコ内のマッチした文字列を返します。
応用例1:複数のタグを抽出する
html_content = "paragraph1
paragraph2
paragraph3
"
matches = re.findall(r'(.*?)
', html_content)
for match in matches:
print("Paragraph content:", match)
この例では、`
`タグで囲まれた全てのパラグラフを抽出しています。
応用例2:XMLから属性を抽出する
xml_content = 'Tove Jani '
match = re.search(r'', xml_content)
if match:
print("Note date:", match.group(1))
この例では、`date`属性をXMLから抽出しています。
まとめ
正規表現を使うことで、PythonでHTMLやXMLを高度にパースすることができます。この知識を用いて、より複雑なデータ解析やWebスクレイピングに挑戦してみてください。
コメント