Estoy tratando de analizar la descarga de documentos arbitrarios desde la web salvaje, y sí, no tengo control de su contenido.Beautiful Soup plantea UnicodeEncodeError "ordinal not in range (128)"
Desde Beautiful Soup won't choke if you give it bad markup... me pregunto ¿por qué me está dando esos crujidos cuando a veces, parte del documento está mal formado, y si hay una manera de hacer que reanudar al siguiente parte legible del documento, independientemente de este error.
La línea en la que se produjo el error es la tercera uno:
from BeautifulSoup import BeautifulSoup as doc_parser
reader = open(options.input_file, "rb")
doc = doc_parser(reader)
CLI salida completa es:
Traceback (most recent call last):
File "./grablinks", line 101, in <module>
sys.exit(main())
File "./grablinks", line 88, in main
links = grab_links(options)
File "./grablinks", line 36, in grab_links
doc = doc_parser(reader)
File "/usr/local/lib/python2.7/dist-packages/BeautifulSoup.py", line 1519, in __init__
BeautifulStoneSoup.__init__(self, *args, **kwargs)
File "/usr/local/lib/python2.7/dist-packages/BeautifulSoup.py", line 1144, in __init__
self._feed(isHTML=isHTML)
File "/usr/local/lib/python2.7/dist-packages/BeautifulSoup.py", line 1186, in _feed
SGMLParser.feed(self, markup)
File "/usr/lib/python2.7/sgmllib.py", line 104, in feed
self.goahead(0)
File "/usr/lib/python2.7/sgmllib.py", line 143, in goahead
k = self.parse_endtag(i)
File "/usr/lib/python2.7/sgmllib.py", line 320, in parse_endtag
self.finish_endtag(tag)
File "/usr/lib/python2.7/sgmllib.py", line 358, in finish_endtag
method = getattr(self, 'end_' + tag)
UnicodeEncodeError: 'ascii' codec can't encode characters in position 15-16: ordinal not in range(128)
¿Qué tipo de información alimentas a BeautifulSoup? De acuerdo con el mensaje de error, ¿tal vez está analizando algunos datos que no son ASCII (que contienen caracteres no latinos, por ejemplo)? –
Estoy analizando los datos provienen de la web salvaje, y algunas partes definitivamente no son ascii. –