застрял с кодировками в Python с BeautifulSoup - PullRequest
2 голосов
/ 31 декабря 2011

Страница закодирована в UTF-8, и с HTMLParser python она работает хорошо, нет UnicodeDecodeError, но я получаю сообщение об ошибке, когда пытаюсь проанализировать ее с BeautifulSoup. Я пробовал _*_ кодирование: utf-8 _*_, .encode('utf-8') везде и все еще получаю ошибку

import urllib
from BeautifulSoup import BeautifulSoup
args=urllib.urlencode({'keywords':'magic'})
doc=urllib.urlopen('http://www.example.com/submit', args)
soup=BeautifulSoup(doc)
stuff = soup.findAll('section',id='banner')
print stuff

Traceback (most recent call last):
      File "test.py", line 7, in <module>
        print stuff
    UnicodeEncodeError: 'ascii' codec can't encode character u'\xed' in position 112: ordinal not in range(128)

Ответы [ 2 ]

3 голосов
/ 01 января 2012

Хорошо, я нашел решение в моей последней попытке, может быть, это поможет другим с той же проблемой. Он должен быть закодирован, а не декодирован

print( [e.encode('utf-8', 'ignore') for e in stuff] )
0 голосов
/ 17 февраля 2016

Вы не должны получать UnicodeEncodeError: 'ascii'.. ошибок при печати.Это часто происходит, если ваш locale поврежден или установлен на C.Затем Python не может установить соответствующий кодировщик в потоке stdout.

Запустить locale и проверить наличие ошибок или предупреждений.

Если вы не можете исправить свой языковой стандарт, вы часто можете переопределитьКодировщик стандартного вывода Python с помощью установки PYTHONIOENCODING в вашей среде на кодировку, соответствующую эмуляции вашего терминала.Часто вы можете обойтись с:

export PYTHONIOENCODING=UTF-8

или

PYTHONIOENCODING=UTF-8 python my_script.py
...