Я использовал Scrapy для получения данных фильмов, но некоторые из них имеют специальные символы, которые закодированы неправильно.
Например, есть фильм, на котором есть ссылка на веб-сайте:
Покемон: детектив Пикачу
Конфликт с символом "é" при получении названия фильма.
Все данные добавляются в файл json с помощью команды терминала «scrapy crawl movie -o movies.json»
Если в файле settings.py Scrapy указано не FEED_EXPORT_ENCODING, слово Покемон записывается в файл json как "Pok\u00e9mon"
Если используется FEED_EXPORT_ENCODING = 'utf-8', имя записывается как "Pokà © mon"
Метод разбора в пауке выглядит следующим образом:
def parse(self, response):
base_link = 'http://www.the-numbers.com'
rows_in_big_table = response.xpath("//table/tr")
movie_name = onerow.xpath('td/b/a/text()').extract()[0]
movie_item['movie_name'] = movie_name
yield movie_budget_item
next_page =
response.xpath('//div[@class="pagination"]/a[@class="active"]/following-
sibling::a/@href').get()
if next_page is not None:
next_page = response.urljoin(next_page)
yield scrapy.Request(next_page, callback=self.parse)
В качестве дополнительной информации у меня есть информация о файле json, где информация анализируется:
<_io.TextIOWrapper name='movie.json' mode='r' encoding='cp1252'>
Цель состоит в том, чтобы получить символ "é"
в слове "Pokémon"
.
Как бы вы решили эту проблему и почему это происходит, я читал много информации о кодировании и в документации по Python, но я могу найти решение.
Я также пытался использовать "unicodedata.normalize('NFKC', 'Pok\u00e9mon')"
, но безуспешно.
Я ценю вашу помощь! Спасибо, ребята!