def innerHTML(element):
"""Returns the inner HTML of an element as a UTF-8 encoded bytestring"""
return element.encode_contents()
这些函数目前不在在线文档中,所以我将引用当前的函数定义和代码中的文档字符串。
encode_contents-自4.0.4版起
def encode_contents(
self, indent_level=None, encoding=DEFAULT_OUTPUT_ENCODING,
formatter="minimal"):
"""Renders the contents of this tag as a bytestring.
:param indent_level: Each line of the rendering will be
indented this many spaces.
:param encoding: The bytestring will be in this encoding.
:param formatter: The output formatter responsible for converting
entities to Unicode characters.
"""
def decode_contents(self, indent_level=None,
eventual_encoding=DEFAULT_OUTPUT_ENCODING,
formatter="minimal"):
"""Renders the contents of this tag as a Unicode string.
:param indent_level: Each line of the rendering will be
indented this many spaces.
:param eventual_encoding: The tag is destined to be
encoded into this encoding. This method is _not_
responsible for performing that encoding. This information
is passed in so that it can be substituted in if the
document contains a <META> tag that mentions the document's
encoding.
:param formatter: The output formatter responsible for converting
entities to Unicode characters.
"""
美丽的汤3
BeautifulSoup 3没有上述功能,而是有renderContents
def renderContents(self, encoding=DEFAULT_OUTPUT_ENCODING,
prettyPrint=False, indentLevel=0):
"""Renders the contents of this tag as a string in the given
encoding. If encoding is None, returns a Unicode string.."""
8条答案
按热度按时间axzmvihb1#
TL;DR
在BeautifulSoup 4中,如果需要UTF-8编码的字节串,请使用
element.encode_contents()
;如果需要Python Unicode字符串,请使用element.decode_contents()
。这些函数目前不在在线文档中,所以我将引用当前的函数定义和代码中的文档字符串。
encode_contents
-自4.0.4版起另请参阅有关格式化程序的文档;您很可能使用
formatter="minimal"
(默认值)或formatter="html"
(对于html entities),除非您希望以某种方式手动处理文本。encode_contents
返回编码的字节串。如果需要Python Unicode字符串,则使用decode_contents
。decode_contents
-自4.0.1版起decode_contents
与encode_contents
执行相同的操作,但返回Python Unicode字符串而不是编码的字节串。美丽的汤3
BeautifulSoup 3没有上述功能,而是有
renderContents
为了与BS 3兼容,BeautifulSoup 4(在4.0.4中)重新添加了此函数。
kxe2p93d2#
其中一个选项可以是这样的:
8wtpewkr3#
给定一个BS4 soup元素(如
<div id="outer"><div id="inner">foobar</div></div>
),这里有一些不同的方法和属性,可以用来以不同的方式检索它的HTML和文本沿着给出了它们将返回什么的示例。内部HTML:
外部HTML:
外部HTML(美化):
仅文本(使用.text):
仅文本(使用.string):
7uhlpewt4#
str(element)
帮助您获取outerHTML,然后从外部html字符串中删除外部标记。iqih9akk5#
就
unicode(x)
怎么样?看起来很适合我。**编辑:**这将为您提供外部HTML,而不是内部HTML。
g6baxovj6#
最简单的方法是使用children属性。
它会返回一个列表。2所以,你可以用一个简单的for循环得到完整的代码。
htrmnn0y7#
如果我没有误解的话,你的意思是举这样一个例子:
输出应如下所示:
这就是你的答案:
qyuhtwio8#
美丽的汤4
get_text()
如果只需要文档或标记中的可读文本,可以使用
get_text()
方法。该方法将文档中或标记下的所有文本作为单个Unicode字符串返回:您可以指定一个字符串,用于将文本位连接在一起:
您可以让Beautiful Soup从每段文本的开头和结尾去掉空格:
但此时您可能希望使用
.stripped_strings
生成器,并自己处理文本:自Beautiful Soup 4.9.0版起,当
lxml
或html.parser
正在使用时,<script>
、<style>
和<template>
标签的内容不会被视为‘text’
,因为这些标签不是页面中人类可见内容的一部分。请访问:https://www.crummy.com/software/BeautifulSoup/bs4/doc/#get-text