2008/02/08

BeautifulSoupを使ってHTMLを解析

PythonでHTMLを解析してHTMLのタグをいろいろ操作する必要があり、調べてみると「BeautifulSoup」という便利なモジュールがありました。

BeautifulSoup

早速使ってみましたが、これはすごく良いですね。簡単にHTMLを解析して操作することができました。しかも、HTMLだけではなくXMLにも使えるようです。

EasyInstallに対応しているので、下記のコマンドで簡単にインストールすることができました。

easy_install beautifulsoup

下記に簡単なサンプルを掲載します。

■HTML内の特定のタグを取得

#!/usr/bin/env python
# -*- coding: utf-8 -*-

from BeautifulSoup import BeautifulSoup
from BeautifulSoup import Tag

html = """
<ul>
<li><a href="aaa.html">aaa</a></li><p>
<li><a href="bbb.html">bbb</a></li>
</ul>

"""

soup = BeautifulSoup(html)

# aタグを取得
for tag in soup.findAll('a'):
print tag


■出力結果

aaa
bbb


■タグを削除(Tagクラスのextractメソッドを使用)

#!/usr/bin/env python
# -*- coding: utf-8 -*-

from BeautifulSoup import BeautifulSoup
from BeautifulSoup import Tag

html = """
<ul>
<li><a href="aaa.html">aaa</a></li><p>
<li><a href="bbb.html">bbb</a></li>
</ul>

"""

soup = BeautifulSoup(html)

#print soup.prettify()

# aタグを取得
for tag in soup.findAll('a'):
tag.extract()

print soup.prettify()


■出力結果

<ul>
<li>
</li>
<p>
</p>
<li>
</li>
</ul>


■タグを別のタグで置き換える

#!/usr/bin/env python
# -*- coding: utf-8 -*-

from BeautifulSoup import BeautifulSoup
from BeautifulSoup import Tag

html = """
<ul>
<li><a href="aaa.html">aaa</a></li><p>
<li><a href="bbb.html">bbb</a></li>
</ul>

"""

soup = BeautifulSoup(html)

#print soup.prettify()

# aタグを取得
for tag in soup.findAll('a'):
t = Tag(soup, "foo")
tag.replaceWith(t)


■出力結果

<ul>
<li>
<foo>
</foo>
</li>
<p>
</p>
<li>
<foo>
</foo>
</li>
</ul>

ラベル:

0 件のコメント :

コメントを投稿

この投稿へのリンク :

リンクを作成

<< ホーム