假设我有一个带有 div
的页面。我可以使用 soup.find()
轻松获得该 div。
现在我有了结果,我想打印整个 innerhtml
div
:我的意思是,我需要一个包含所有 html 标签和文本的字符串,就像我在 javascript 中使用 obj.innerHTML
得到的字符串一样。这可能吗?
原文由 Matteo Monti 发布,翻译遵循 CC BY-SA 4.0 许可协议
假设我有一个带有 div
的页面。我可以使用 soup.find()
轻松获得该 div。
现在我有了结果,我想打印整个 innerhtml
div
:我的意思是,我需要一个包含所有 html 标签和文本的字符串,就像我在 javascript 中使用 obj.innerHTML
得到的字符串一样。这可能吗?
原文由 Matteo Monti 发布,翻译遵循 CC BY-SA 4.0 许可协议
2 回答5.3k 阅读✓ 已解决
2 回答1.2k 阅读✓ 已解决
4 回答1.5k 阅读✓ 已解决
3 回答1.4k 阅读✓ 已解决
3 回答1.3k 阅读✓ 已解决
2 回答1.6k 阅读✓ 已解决
4 回答1.6k 阅读
长话短说
对于 BeautifulSoup 4 使用
element.encode_contents()
如果你想要一个 UTF-8 编码的字节串或者使用element.decode_contents()
如果你想要一个 Python Unicode 字符串。例如, DOM 的 innerHTML 方法 可能看起来像这样:这些函数当前不在联机文档中,因此我将引用代码中的当前函数定义和文档字符串。
encode_contents
- 从 4.0.4 开始另请参阅 有关格式化程序的文档;您很可能会使用
formatter="minimal"
(默认值)或formatter="html"
(对于 html 实体),除非您想以某种方式手动处理文本。encode_contents
返回编码字节串。如果您想要 Python Unicode 字符串,请改用decode_contents
。decode_contents
- 自 4.0.1decode_contents
encode_contents
同样的事情,但返回 Python Unicode 字符串而不是编码的字节串。BeautifulSoup 3
BeautifulSoup 3 没有上述功能,而是有
renderContents
为了与 BS3 兼容,此功能已添加回 BeautifulSoup 4( 在 4.0.4 中)。