#python-2.7 #scrapy #python-unicode
#python-2.7 #scrapy #python-юникод
Вопрос:
У меня определен конвейер scrapy, который должен записывать любое поле элемента, просматриваемое скребком, в текст. Одно из полей содержит HTML-код. У меня возникают проблемы с записью в файл из-за пресловутой ошибки Unicode:
Ошибка UnicodeEncodeError: кодек ‘ascii’ не может кодировать символ u’ xa0′ в позиции 100: порядковый номер не входит в диапазон (128)
Scrapy может записывать все поля в формате json в файле журнала. Может кто-нибудь объяснить, что нужно сделать, чтобы обработать кодировку символов для записи файлов? Заранее спасибо.
import scrapy
import codecs
class SupportPipeline(object):
def process_item(self, item, spider):
for key, value in item.iteritems():
with codecs.open("%s.%s" % (prefix, key), 'wb', 'utf-8') as f:
# with open("%s.%s" % (prefix, key), 'wb') as f:
f.write(value.encode('utf-8'))
return item
Комментарии:
1. можете ли вы попробовать с помощью простого writr, кажется, что двойная кодировка likr, попробуйте просто
f.write(value)
2. также не то, чтобы это имело значение, попробуйте упомянуть
encoding='utf8'
при открытии потока файлов с возможностью записи