encode_contents vs Python BeautifulSoup 中的编码("utf-8")
encode_contents vs encode("utf-8") in Python BeautifulSoup
好吧,作为一个初学者网络爬虫,我感觉好像我看到两者都被使用过,在 HTML 中转换文本的默认 unicode 时似乎可以互换。我知道 contents() 是一个列表对象,但除此之外,到底有什么区别?
我注意到 .encode("utf-8") 似乎更通用。
谢谢,
-糊涂汤。
encode_contents()
的方法签名表明,除了对内容进行编码,它还可以格式化输出:
encode_contents(self, indent_level=None, encoding='utf-8', formatter='minimal') method of bs4.BeautifulSoup instance
Renders the contents of this tag as a bytestring.
例如:
>>> from bs4 import BeautifulSoup
>>> soup = BeautifulSoup('<html><body><p>Caf\xe9</p></body></html>')
>>> soup.encode_contents()
'<html><body><p>Caf\xc3\xa9</p></body></html>'
>>> soup.encode_contents(indent_level=1)
'<html>\n <body>\n <p>\n Caf\xc3\xa9\n </p>\n </body>\n</html>'
>>> soup.encode_contents(indent_level=1, encoding='iso-8859-1')
'<html>\n <body>\n <p>\n Caf\xe9\n </p>\n </body>\n</html>'
str.encode('utf-8')
只能进行编码部分,不能进行格式化
encode_contents
的文档:
encode_contents(self, indent_level=None, encoding='utf-8', formatter='minimal') method of bs4.BeautifulSoup instance
Renders the contents of this tag as a bytestring.
encode
方法的文档:
encode(self, encoding='utf-8', indent_level=None, formatter='minimal', errors='xmlcharrefreplace')
encode
方法将对 bs4.BeautifulSoup
对象实例起作用。 encode_contents
将处理 bs4.BeautifulSoup
实例的内容。
>>> html = "<div>div content <p> a paragraph </p></div>"
>>> soup = BeautifulSoup(html)
>>> soup.div.encode()
>>> '<div>div content <p> a paragraph </p></div>'
>>> soup.div.contents
>>> [u'div content ', <p> a paragraph </p>]
>>> soup.div.encode_contents()
>>> 'div content <p> a paragraph </p>'
好吧,作为一个初学者网络爬虫,我感觉好像我看到两者都被使用过,在 HTML 中转换文本的默认 unicode 时似乎可以互换。我知道 contents() 是一个列表对象,但除此之外,到底有什么区别?
我注意到 .encode("utf-8") 似乎更通用。
谢谢,
-糊涂汤。
encode_contents()
的方法签名表明,除了对内容进行编码,它还可以格式化输出:
encode_contents(self, indent_level=None, encoding='utf-8', formatter='minimal') method of bs4.BeautifulSoup instance
Renders the contents of this tag as a bytestring.
例如:
>>> from bs4 import BeautifulSoup
>>> soup = BeautifulSoup('<html><body><p>Caf\xe9</p></body></html>')
>>> soup.encode_contents()
'<html><body><p>Caf\xc3\xa9</p></body></html>'
>>> soup.encode_contents(indent_level=1)
'<html>\n <body>\n <p>\n Caf\xc3\xa9\n </p>\n </body>\n</html>'
>>> soup.encode_contents(indent_level=1, encoding='iso-8859-1')
'<html>\n <body>\n <p>\n Caf\xe9\n </p>\n </body>\n</html>'
str.encode('utf-8')
只能进行编码部分,不能进行格式化
encode_contents
的文档:
encode_contents(self, indent_level=None, encoding='utf-8', formatter='minimal') method of bs4.BeautifulSoup instance
Renders the contents of this tag as a bytestring.
encode
方法的文档:
encode(self, encoding='utf-8', indent_level=None, formatter='minimal', errors='xmlcharrefreplace')
encode
方法将对 bs4.BeautifulSoup
对象实例起作用。 encode_contents
将处理 bs4.BeautifulSoup
实例的内容。
>>> html = "<div>div content <p> a paragraph </p></div>"
>>> soup = BeautifulSoup(html)
>>> soup.div.encode()
>>> '<div>div content <p> a paragraph </p></div>'
>>> soup.div.contents
>>> [u'div content ', <p> a paragraph </p>]
>>> soup.div.encode_contents()
>>> 'div content <p> a paragraph </p>'