UnicodeEncodeError: el códec 'ascii' no puede codificar el carácter u '\ xa0' en la posición 20: el ordinal no está en el rango (128)

Tengo problemas para tratar con caracteres Unicode del texto obtenido de diferentes páginas web (en diferentes sitios). Estoy usando BeautifulSoup.

El problema es que el error no siempre es reproducible; a veces funciona con algunas páginas y, a veces, irrita lanzando unUnicodeEncodeError. He intentado casi todo lo que se me ocurre y, sin embargo, no he encontrado nada que funcione de manera consistente sin arrojar algún tipo de error relacionado con Unicode.

Abajo se muestra una de las secciones de código que está causando problemas:

agent_telno = agent.find('div', 'agent_contact_number')
agent_telno = '' if agent_telno is None else agent_telno.contents[0]
p.agent_info = str(agent_contact + ' ' + agent_telno).strip()

Aquí hay un seguimiento de pila producido en ALGUNAS cadenas cuando se ejecuta el fragmento de arriba:

Traceback (most recent call last):
  File "foobar.py", line 792, in <module>
    p.agent_info = str(agent_contact + ' ' + agent_telno).strip()
UnicodeEncodeError: 'ascii' codec can't encode character u'\xa0' in position 20: ordinal not in range(128)

Sospecho que esto se debe a que algunas páginas (o más específicamente, páginas de algunos de los sitios) pueden estar codificadas, mientras que otras pueden estar sin codificar. Todos los sitios se basan en el Reino Unido y proporcionan datos destinados al consumo del Reino Unido, por lo que no hay problemas relacionados con la internalización o el tratamiento de textos escritos en otro idioma que no sea inglé

¿Alguien tiene alguna idea sobre cómo resolver esto para que pueda solucionar CONSISTENTEMENTE este problema?

Respuestas a la pregunta(48)

Su respuesta a la pregunta