scrapy: запись юникода в конвейере записи файлов

#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' при открытии потока файлов с возможностью записи