Я использую Scrapy Pipeline, чтобы передать все элементы в информационный фрейм.
Код работает хорошо, но текст в кодировке Юникод не отображается правильно на выходе кадра данных.
Однако результат в CSV-файле, экспортированном feed_exporter, все еще в порядке. Не могли бы вы, ребята, посоветовать, пожалуйста?
Вот код
#In pipelines.py
class CrawlerPipeline(object):
def open_spider(self, spider):
settings = get_project_settings()
self.df = pd.DataFrame(columns=settings.get('FEED_EXPORT_FIELDS'))
print('SUCCESS CREATE DATAFRAME', self.df.columns)
def process_item(self, item, spider):
self.df = self.df.append([dict(item)]) #I think it has problem in this line of code
print('SUCCESS APPEND RECORD TO DATAFRAME, DF LEN:', len(self.df))
return item
#In spider.py
def parse_detail_page(self, response):
ads = CrawlerItem()
ads['body'] = (response.css('#sgg > div > div> div.car_des > div::text').extract_first() or "").encode('utf-8').strip()
yield(ads)
Это неверный вывод очищенного текста:
b'Salon \ xc3 \ xb4 t \ xc3 \ xb4 \ xc3 \ x81nh L \ xc3 \ xbd b \ xc3 \ xa1n xe Киа Каренс с \ xe1 \ xba \ xa3n xu \ xe1 \ xba \ xa5t 2015 м \ xc3 \ xa0u c \ xc3 \ xa1t '