python - 为什么 BeautifulSoup 的 unwrap 方法会删除标签内的文本而不是删除标签?
问题描述
从Beautiful Soup 4's unwrap
method的文档中,我希望下面的代码能够打印出来Lorem ipsum dolor sit amet
。相反,它打印<p></p>
. 不unwrap()
应该“用该标签内的任何内容替换标签”(引用文档)?
#!/usr/bin/env python3
import bs4
markup = '<p>Lorem ipsum dolor sit amet</p>'
soup = bs4.BeautifulSoup(markup, "lxml")
p_tag = soup.p
p_tag.unwrap()
print(p_tag)
我想我误解了文档中的示例。我正在使用 Python 3.7.3 和 Beautiful Soup 4.7.1。
解决方案
文档说:
Tag.unwrap() 与 wrap() 相反。它用标签内的任何内容替换标签。
因此,它将汤内的标签替换为标签内的内容。
考虑这个例子:
import bs4
markup = '<other_tag><p>Lorem ipsum dolor sit amet</p></other_tag>'
soup = bs4.BeautifulSoup(markup, "lxml")
p_tag = soup.p
print(p_tag.parent) # <other_tag><p>Lorem ipsum dolor sit amet</p></other_tag>
p_tag.unwrap()
print(p_tag) # <p></p>
print(p_tag.parent) # None
print(soup.other_tag) # <other_tag>Lorem ipsum dolor sit amet</other_tag>
使用.unwrap()
,我们有效地从汤中删除标签,并将其替换为该标签内的内容。未包装的标签现在已将父级设置None
为空 -> 它的内容已移至其他位置(到父级)。
推荐阅读
- qt - 按类型转换时获取子类 qgraphicsitem 坐标
- windows - 写入时全双工命名管道锁定
- java - 如何在从杰克逊的字符串构造 JsonNode 时更改它的值
- python - 将不同的数据框分配给不同的变量
- kubernetes - 找不到所需的 GKE pod,谷歌云作曲家
- java - 如何在不从 Swing 继承的情况下正确“分层”图像(并更改源)
- java - 如何更改 JScrollPane 中滚动条的颜色?
- sql - SQL:使用从选择 SQL 中提取的值连接表
- automation - 使用自动化问题使窗口保持活动/打开
- html - 如何使字体很棒以在实时网站上显示