lenarsaitov / cianparser

Сбор данных с сайта объявлений Циан / The parser of general information from the site cian.ru
https://pypi.org/project/cianparser/
MIT License
126 stars 38 forks source link

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

Open immelnikoff opened 1 year ago

immelnikoff commented 1 year ago

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

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

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

lenarsaitov commented 11 months ago

Добрый день!

Постараюсь в ближайшее время изучить данный вопрос.