私はMSFrontPageで生成されたWebサイトのhtmlを「defrontpagify」しようとしています。それを行うためにBeautifulSoupスクリプトを作成しています。
ただし、特定の属性(またはリスト属性)を含むドキュメント内のすべてのタグから特定の属性(またはリスト属性)を削除しようとする部分に行き詰まりました。コードスニペット:
REMOVE_ATTRIBUTES = ['lang','language','onmouseover','onmouseout','script','style','font',
'dir','face','size','color','style','class','width','height','hspace',
'border','valign','align','background','bgcolor','text','link','vlink',
'alink','cellpadding','cellspacing']
# remove all attributes in REMOVE_ATTRIBUTES from all tags,
# but preserve the tag and its content.
for attribute in REMOVE_ATTRIBUTES:
for tag in soup.findAll(attribute=True):
del(tag[attribute])
エラーなしで実行されますが、実際にはどの属性も削除されません。外側のループなしで実行すると、単一の属性(soup.findAll('style' = True)をハードコーディングするだけで機能します。
ここで問題を知っている人はいますか?
PS-ネストされたループもあまり好きではありません。もっと機能的なマップ/フィルターっぽいスタイルを知っている人がいたら、ぜひ見てみたいです。