how div python beautifulsoup encode

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>''