У меня есть html-файл, в котором есть какой-то текст, который выглядит следующим образом (после запуска через lxml.html parse
, lxml.html clean
, и это результат etree.tostring(table, pretty_print=True)
)
<tr><td>
224
9:00 am
-3:00 pm
NPHC Leadership</td>
<td>
<font>ALSO IN 223; WALL OPEN</font></td>
Документация, которую я нашел на lxml, была несколько пятнистой .Мне удалось немало сделать, чтобы добраться до этого момента, но я хотел бы удалить все теги, кроме <table>
, <td>
и <tr>
.Я также хотел бы удалить все атрибуты из этих тегов, и я также хотел бы избавиться от сущностей, таких как
.
Чтобы удалить атрибуты, которые я использую в настоящее время:
etree.strip_attributes(tree, 'width', 'href', 'style', 'onchange',
'ondblclick', 'class', 'colspan', 'cols',
'border', 'align', 'color', 'value',
'cellpadding', 'nowrap', 'selected',
'cellspacing')
, который работает нормально, но, похоже, должен быть лучший способ.Кажется, должно быть несколько довольно простых методов, чтобы делать то, что я хочу, но я не смог найти примеров, которые бы сработали для меня.
Я пытался использовать Cleaner
, но когда я его пропустил allow_tags
, вот так:
ошибка: Cleaner(allow_tags=['table', 'td', 'tr']).clean_html(tree)
это дало мне эту ошибку:
ValueError: It does not make sense to pass in both allow_tags and remove_unknown_tags
.Кроме того, когда я добавляю remove_unkown_tags=False
, я получаю эту ошибку:
Traceback (most recent call last):
File "parse.py", line 73, in <module>
SParser('schedule.html').test()
File "parse.py", line 38, in __init__
self.clean()
File "parse.py", line 42, in clean
Cleaner(allow_tags=['table', 'td', 'tr'], remove_unknown_tags=False).clean_html(tree)
File "/usr/lib/python2.6/dist-packages/lxml/html/clean.py", line 488, in clean_html
self(doc)
File "/usr/lib/python2.6/dist-packages/lxml/html/clean.py", line 390, in __call__
el.drop_tag()
File "/usr/lib/python2.6/dist-packages/lxml/html/__init__.py", line 191, in drop_tag
assert parent is not None
AssertionError
Итак, чтобы подвести итог:
- Я хочу удалить объекты HTML, такие как
- Я хочу удалить все теги, кроме
<table>
, <tr>
и <td>
- Я хочу удалить все атрибуты из оставшихся тегов.
Любая помощь будет принята с благодарностью!