Html BS4:使用新标记包装同级的范围
我在Beautifulsoup4.8.1上 我想增加一个HTML文件以突出显示感兴趣的部分 让我们举个例子。假设我有Html BS4:使用新标记包装同级的范围,html,beautifulsoup,Html,Beautifulsoup,我在Beautifulsoup4.8.1上 我想增加一个HTML文件以突出显示感兴趣的部分 让我们举个例子。假设我有 前面的一些垃圾 开始触发 同侧阴唇 坐吧,艾米特,康塞图尔·埃利蒂尔 最后更混乱 末端触发器 我已经能够在中间提取一个包含四代码> /COD>标签的列表(即从“开始触发器”直到“杂波”,包括)。 我希望生成以下输出: 前面的一些垃圾 开始触发 同侧阴唇 坐吧,艾米特,康塞图尔·埃利蒂尔 最后更混乱 末端触发器 我怎样才能做到这一点?我认为知道如何创建已知bs4.eleme
前面的一些垃圾
开始触发
同侧阴唇
坐吧,艾米特,康塞图尔·埃利蒂尔
最后更混乱
末端触发器
我已经能够在中间提取一个包含四代码> /COD>标签的列表(即从“开始触发器”直到“杂波”,包括)。 我希望生成以下输出:
前面的一些垃圾
开始触发
同侧阴唇
坐吧,艾米特,康塞图尔·埃利蒂尔
最后更混乱
末端触发器
我怎样才能做到这一点?我认为知道如何创建已知bs4.element.Tag的新同级可能会有所帮助,如果不能“原子化”地包装整个范围。基于您的示例,我已经尝试过这一点。希望这能有所帮助。 首先使用正则表达式,元素需要在前面添加标记,然后
find_next_同胞
()进行查找,直到找到为止
最后添加新标签,然后在其中添加所有div标签
import re
from bs4 import BeautifulSoup
html='''<div> some preceding junk </div>
<div> BEGIN TRIGGER </div>
<div> Lorem ipsum dolor </div>
<div> sit amet, consetetur elitir </div>
<div> more clutter at the end </div>
<div> END TRIGGER </div>'''
soup=BeautifulSoup(html,'html.parser')
search=soup.find("div",text=re.compile('BEGIN'))
prev=search.find_previous_siblings('div')[0]
new_tag = soup.new_tag("p")
new_tag.append(str(search) +'\n')
for item in search.find_next_siblings('div'):
if 'END TRIGGER' in item.text:
lastement=item
break;
else:
new_tag.append(str(item) + '\n')
finalsoup=str(prev) +'\n' + new_tag.prettify(formatter=None) + '\n' + str(lastement)
print(finalsoup)
重新导入
从bs4导入BeautifulSoup
html=''一些前面的垃圾
开始触发
同侧阴唇
坐吧,艾米特,康塞图尔·埃利蒂尔
最后更混乱
结束触发器“”'
soup=BeautifulSoup(html,'html.parser')
search=soup.find(“div”,text=re.compile(“BEGIN”))
prev=search.find_previous_同胞('div')[0]
新标签=汤。新标签(“p”)
新标签.append(str(搜索)+'\n')
对于搜索中的项目。查找下一个兄弟姐妹('div'):
如果item.text中的“结束触发器”:
最后期限=项目
打破
其他:
新标签.append(str(item)+'\n')
finalsoup=str(prev)+'\n'+新标签。修饰(格式化程序=None)+'\n'+str(lastement)
打印(最终组)
输出:
<div> some preceding junk </div>
<p>
<div> BEGIN TRIGGER </div>
<div> Lorem ipsum dolor </div>
<div> sit amet, consetetur elitir </div>
<div> more clutter at the end </div>
</p>
<div> END TRIGGER </div>
前面的一些垃圾
开始触发
同侧阴唇
坐吧,艾米特,康塞图尔·埃利蒂尔
最后更混乱
末端触发器
在我看来,这更像是一些棘手的字符串操作,而不是实际的HTML树操作。你知道如何实现后者吗?事实上,这是一个棘手的字符串操作。没有通用的方法来实现这种用例。