【发布时间】:2021-11-08 18:02:45
【问题描述】:
我想得到一个没有某些元素的 HTML 字符串。但是,预先我只知道要保留哪些元素,但不知道要删除哪些元素。
假设我只想将所有p 和a 标签保留在div 和class="A" 中。
输入:
<div class="A">
<p>Text1</p>
<img src="A.jpg">
<div class="sub1">
<p>Subtext1</p>
</div>
<p>Text2</p>
<a href="url">link text</a>
</div>
<div class="B">
ContentDiv2
</div>
预期输出:
<div class="A">
<p>Text1</p>
<p>Text2</p>
<a href="url">link text</a>
</div>
如果我知道所有其他元素的所有选择器,我可以使用lxml 的drop_tree()。但问题是我不知道['img', 'div.sub1', 'div.B'] 前期。
以drop_tree() 为例:
import lxml.cssselect
import lxml.html
tree = lxml.html.fromstring(html_str)
elements_drop = ['img', 'div.sub1', 'div.B']
for j in elements_drop:
selector = lxml.cssselect.CSSSelector(j)
for e in selector(tree):
e.drop_tree()
output = lxml.html.tostring(tree)
【问题讨论】:
-
你的问题不清楚;请编辑您的问题并将另一个
<div>兄弟<div>与class="A"添加到您的html 字符串中,但使用另一个类,然后在给定这个新的html 字符串的情况下准确显示您的预期输出。