python - 美丽的汤 insert_before 和 after 不工作
问题描述
我有两个 Beautiful Soup 标签,我试图一个接一个地放置,所以我正在使用insert_before
(并且也尝试过insert_after
作为另一种选择)。该功能似乎对任何一个标签都没有任何影响。我希望结果是,在函数调用之后,对象new_p
包含embed
在现有<p>
标记之后。
这显示了终端(断点内)中的事务状态(对象类型、函数效果)——有什么想法吗?
ipdb> type(embed)
<class 'bs4.element.Tag'>
ipdb> embed
<embed alt=" Refugee Tales)" caption=" Refugee Tales)" embedtype="image" format="fullwidth" id="1691"/>
ipdb> type(new_p)
<class 'bs4.element.Tag'>
ipdb> new_p
<p> Refugee Tales walk (Photo: Refugee Tales)</p>
ipdb> type(html)
<class 'bs4.BeautifulSoup'>
ipdb> new_p in html
True
ipdb> embed in html
False
ipdb> new_p.insert_before(embed)
ipdb> embed in html
True
ipdb> new_p
<p> Refugee Tales walk (Photo: Refugee Tales)</p>
ipdb> embed
<embed alt=" Refugee Tales)" caption=" Refugee Tales)" embedtype="image" format="fullwidth" id="1691"/>
ipdb> new_p.insert_after(embed)
ipdb> new_p
<p> Refugee Tales walk (Photo: Refugee Tales)</p>
ipdb> embed
<embed alt=" Refugee Tales)" caption=" Refugee Tales)" embedtype="image" format="fullwidth" id="1691"/>
名称:beautifulsoup4 版本:4.6.0
解决方案
from bs4 import BeautifulSoup
html = "<p> Refugee Tales walk (Photo: Refugee Tales)</p>"
new_p = BeautifulSoup(html, "html")
embed=new_p.new_tag("embed",alt=" Refugee Tales)", caption=" Refugee Tales)", embedtype="image", format="fullwidth", id="1691")
要将嵌入标签放置在 p 标签内,您需要:
new_p.p.append(embed)
要将嵌入标签放在 p 标签之后,您需要:
new_p.p.insert_after(embed)
推荐阅读
- javascript - Firestore 云功能尝试使用批处理对 Writes 和 Missing return promise 进行分组
- javascript - 使用 fetch(),从非 HTTP OK 状态码中读取响应体并捕获异常
- fipy - 使用 Mesh2D 构造函数重新创建 fipy Grid2D
- r - 用 dplyr 总结 - 一个变量总是在底部
- amp-html - ¿ 我可以在 amp 网站上添加一个号召性用语按钮来引导非 amp 调查吗?
- html - 设置表格突出显示的列文本颜色
- r - R:使用向量点和for循环从序列生成序列
- php - PHP 搜索特定值的多维数组
- ios - 以编程方式居中多个 (4) 视图
- python - AttributeError:类型对象“可调用”没有属性“_abc_registry”