lenarsaitov/cianparser

Проблема с кодировкой во время работы parse

immelnikoff opened this issue · 1 comments

Возникла проблема с кодировкой во время парсинга:

data = cianparser.parse(
deal_type="sale",
accommodation_type="flat",
location="Москва",
rooms=3,
start_page=1,
end_page=2,
is_saving_csv=True,
is_latin=False,
is_express_mode=False)
Output:
Preparing to collect information from pages..
The absolute path to the file:
C:\Users\xxx\cian_parsing_result_sale_1_2_moskva_12_Apr_2023_00_44_16_279313.csv

The page from which the collection of information begins:
https://cian.ru/cat.php?engine_version=2&p=1&region=1&offer_type=flat&deal_type=sale&room3=1&with_neighbors=0

Collecting information from pages with list of announcements
Failed exception: 'charmap' codec can't encode character '\xc1' in position 148: character maps to . Progress ratio: 38 %. Average price: 111 115 271 rub
Ending parse on 1 page...

The collection of information from the pages with list of announcements is completed
Total number of parced announcements: 22. Average price: 107 843 719 rub

Проблему идентифицировал.
image
Дело в строке "ÁLIA (АЛИЯ)", а именно в символе Unicode "Á", имеющего в таблице Unicode 193-й порядковый номер, что в hex-формате равно \xc1. Именно это и сказано в описании ошибки.

lenarsaitov, ИМХО, если вы хотите оставаться в рамках 1-байтовой кодировки (что резонно для экономии места на диске), то вам нужно транслировать подобные символы Unicode в подходящие символы из ASCII.
Ну, или нужно переходить на utf-8.

PS.
Всё нормально отработало с параметром is_latin = True.
Хотя, не очень понятно почему, так как в доке написано

is_latin - необходимо ли преобразывание любой встрещающейся кириллицы в латиницу, по умолчанию False

Но Á – это не символ кириллицы...