【发布时间】:2020-05-01 12:12:07
【问题描述】:
考虑下面的html sn-p
<html>
.
.
.
<div>
<p> Hello </p>
<div>
<b>
Text1
</b>
<p>
This is a huge paragraph text
</p>
.
.
.
</div>
</div>
.
.
.
<div>
<i>
Text2
</i>
</div>
假设我需要提取从Text1 到Text2 的所有内容,包括标签。
使用一些方法,我已经能够提取出这两者的标签,即它们的唯一 ID。
基本上我有 2 个 Element.etree 元素,对应于我需要的两个标签。
如何提取两个标签之间的所有内容?
(我能想到的一个可能的解决方案是找到两个标签的共同祖先,然后执行iterwalk() 并从 Element1 开始提取,并在 2 处停止。但是,我不确定这会如何)
任何解决方案将不胜感激。
请注意,我已经找到了我需要的两个标签,我不是在寻找解决方案来找到这些标签(例如使用 xpath)
编辑:我想要的输出是
<b>
Text1
</b>
<p>
This is a huge paragraph text
</p>
.
.
.
</div>
</div>
.
.
.
<div>
<i>
Text2
</i>
请注意,我不介意最初的 2 个<div> 标签,但不想要Hello。
结束的结束标签也是如此。我最感兴趣的是中间的内容。
编辑 2:我使用复杂的 xpath 条件提取了 Etree 元素,这对于 bs4 等其他替代方案是不可行的,因此任何使用 lxml 元素的解决方案都将不胜感激:)
【问题讨论】:
-
你能提供想要的输出吗?
-
我已经用所需的输出编辑了我的帖子。道歉
-
您应该考虑使用正则表达式
-
输出可能不是正确的
xml结构,有问题吗? -
不,这不是问题。我最感兴趣的是提取中间的文本