Если вам нужно текстовое представление всех подэлементов без корневого элемента, вы можете сделать:
subels = ''.join([etree.tostring(el).decode('ascii') for el in html])
, где html
- это Element
вашего вопроса. В этом случае subels
является строкой:
'<div class="foo"/><p>bar</p>'
Это может быть улучшено, чтобы получать только определенные теги, используя метод iter
. Например:
subels = ''.join([etree.tostring(el).decode('ascii') for el in html.iter('div', 'p'])
вернет только теги 'div'
и 'p'
, поэтому, если бы были другие теги, они были бы опущены.
Вы можете использовать его для фильтрации нежелательных тегов. , но будьте осторожны, потому что это может нарушить иерархию документа: он по-прежнему возвращает дочерние теги нежелательных тегов.
РЕДАКТИРОВАТЬ после комментариев
Если корневой тег имеет текстовую информацию, которую вы хотите сохранитьПросто добавьте его обратно.
subels = ''.join([html.text] + [etree.tostring(el).decode('ascii') for el in html])