Я пытаюсь 'defrontpagify' html сгенерированного MS FrontPage веб-сайта, и я пишу скрипт 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 - мне тоже не очень нравятся вложенные циклы. Если кто-то знает более функциональный, похожий на карту/фильтр стиль, я был бы рад увидеть его.