Estoy escribiendo un rastreador con Python usando BeautifulSoup, y todo estaba yendo viento en popa hasta que me encontré con este sitio:Python y BeautifulSoup problemas de codificación
estoy recibiendo el contenido con la biblioteca de solicitudes :
r = requests.get('http://www.elnorte.ec/')
content = r.content
Si hago una impresión de la variable contenido en ese punto, todos los caracteres especiales españoles parecen estar funcionando bien. Sin embargo, una vez que trato de alimentar la variable contenido a BeautifulSoup todo queda patas arriba:
soup = BeautifulSoup(content)
print(soup)
...
<a class="blogCalendarToday" href="/component/blog_calendar/?year=2011&month=08&day=27&modid=203" title="1009 artÃculos en este dÃa">
...
al parecer es garbling de seguridad de todos los caracteres especiales (acentos españoles y otras cosas). He intentado hacer content.decode ('utf-8'), content.decode ('latin-1'), también intenté meterme con el parámetro fromEncoding en BeautifulSoup, configurándolo en fromEncoding = 'utf-8' y fromEncoding = 'latin-1', pero aún no hay dados.
Cualquier puntero sería muy apreciado.
Hola Gaikokujin, gracias por su respuesta. Tienes toda la razón, si lo embellece con el parámetro 'latin-1', recupero la cuerda con todos los acentos correctos y todo. Sin embargo, tengo que pasar por la sopa para procesar los enlaces, y si intento hacer una sopa de nuevo, vuelve a enredar los acentos. – David
En realidad, no importa, ahora recibo un error al intentar su sugerencia: UnicodeEncodeError: el códec 'latin-1' no puede codificar caracteres en la posición 62-63: ordinal no está dentro del rango (256) – David
Parece que funciona de nuevo si lo hago: x = BeautifulSoup.BeautifulSoup (r.read(), fromEncoding = 'latin-1'), pero de nuevo, si trato de hacer una nueva sopa de la cuerda embellecida, la vuelve a enredar:/ – David