@rodion_ilnitskiy

JSON неправильно записывает полученные данные. Как решить проблему?

Я пытаюсь пропарсить страницу запуская код:
import scrapy


class NewSpider(scrapy.Spider):
    name = "new"
    start_urls = [
        'https://tsum.ua/ua/nova-kolekcija.html',
    ]
    def parse(self, response):
        for category in response.xpath('//div[@class="product-detail-content"]'):
            yield{
                'name': category.xpath('h5[@class="product-item-brand-name"]/a[@class="product-item-link"]/text()').extract(),
                'deskription': category.xpath('h5[@class="product name product-item-name"]/a[@class="product-item-link"]/text()').extract(),
            }


Запуская
scrapy crawl new -o alles.json
я получаю то, что необходимо:
{'name': ['\n                                                REDValentino                                            '], 'deskription': ['Джинси']}

Однако в самом файле JSON записиваеться все так:
{"name": ["\n                                                REDValentino                                            "], "deskription": ["\u0417\u0430\u043c\u0448\u0435\u0432\u0456 \u043c\u044e\u043b\u0456"]},

как сделать description похожим на то, что я получил в терминале?
  • Вопрос задан
  • 113 просмотров
Решения вопроса 1
Vindicar
@Vindicar
RTFM!
Ну во-первых, \u-нотация встречается не только в питоне, но и в JSON как таковом. Достаточно вбить в терминал питона
print("\u0417\u0430\u043c\u0448\u0435\u0432\u0456 \u043c\u044e\u043b\u0456")
чтобы убедиться, что строка в норме. Машина её прочитает без проблем.
Но если таки хочется человекочитаемого вида (пусть и ценой усложения программы), то нужно почитать про параметр ensure_ascii, а заодно не забыть открыть целевой файл в кодировке utf-8 или подобной.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы