div - python scraper beautifulsoup
encode_contents vs encode("utf-8") en Python BeautifulSoup (2)
La firma del método para encode_contents()
muestra que, además de codificar el contenido, también puede formatear el resultado:
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.
Por ejemplo:
>>> 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'')
solo puede ejecutar la parte de codificación, no formateando.
De acuerdo, como principiante, me parece que los he visto usar, aparentemente de manera intercambiable, al convertir el unicode predeterminado de texto en HTML. Sé que contents () es un objeto de lista, pero aparte de eso, ¿qué diablos es la diferencia?
Me di cuenta de que .encode ("utf-8") parece funcionar de manera más universal.
Gracias,
- souper confuso.
La documentación de 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.
La documentación del método de encode
:
encode(self, encoding=''utf-8'', indent_level=None, formatter=''minimal'', errors=''xmlcharrefreplace'')
encode
método de encode
funcionará en una instancia del objeto bs4.BeautifulSoup
. encode_contents
funcionará en los contenidos de una instancia de 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>''