Duff89 / parser_avito

Находит товары на avito.ru по ключевым словам
139 stars 47 forks source link

Ошибка с кодировкой данных для записи данных в файл, как можно поменять кодировку? #7

Closed fmfnjnf closed 1 year ago

fmfnjnf commented 1 year ago

2023-05-16 18:19:14.771 | ERROR | parser_cls:paginator:79 - An error has been caught in function 'paginator', process 'MainProcess' (31792), thread 'Thread-3' (20864): Traceback (most recent call last):

File "n39\lib\threading.py", line 930, in _bootstrap self._bootstrap_inner() │ └ <function Thread._bootstrap_inner at 0x000002556E521550> └ <Thread(Thread-3, started 20864)>

File "\threading.py", line 973, in _bootstrap_inner self.run() │ └ <function Thread.run at 0x000002556E521310> └ <Thread(Thread-3, started 20864)>

File "39\lib\threading.py", line 910, in run self._target(*self._args, **self._kwargs) │ │ │ │ │ └ {} │ │ │ │ └ <Thread(Thread-3, started 20864)> │ │ │ └ () │ │ └ <Thread(Thread-3, started 20864)> │ └ <bound method Window.start_scraping of <main.Window object .>> └ <Thread(Thread-3, started 20864)>

File "ito-master\AvitoParser.py", line 150, in start_scraping self.run_parse() │ └ <function Window.run_parse at 0x00000255710DA700> └ <main.Window object .>

File "aster\AvitoParser.py", line 249, in run_parse AvitoParse( └ <class 'parser_cls.AvitoParse'>

File "parser_avito-master\parser_cls.py", line 252, in parse self.__paginator() └ <parser_cls.AvitoParse object at 0x00000255710CEBB0>

File "ser_avito-master\parser_cls.py", line 79, in paginator self.parse_page() └ <parser_cls.AvitoParse object at 0x00000255710CEBB0>

File "master\parser_cls.py", line 126, in __parse_page self.__save_data(data=data) │ └ {'name': 'Мониторы 24 IPS Fujitsu B24W-7 LED', 'description': 'Мониторы Fujitsu B24W-7 Led — В наличии 200шт. Гарантия от маг... └ <parser_cls.AvitoParse object at 0x00000255710CEBB0>

File "ster\parser_cls.py", line 189, in __save_data writer.writerow([ │ └ <method 'writerow' of '_csv.writer' objects> └ <_csv.writer object at 0x0000025572C5F630>

File "\Python39\lib\encodings\cp1251.py", line 19, in encode return codecs.charmap_encode(input,self.errors,encoding_table)[0] │ │ │ │ │ └ <EncodingMap object at 0x000002556DACBBD0> │ │ │ │ └ 'strict' │ │ │ └ <encodings.cp1251.IncrementalEncoder object at 0x0000025573674D90> │ │ └ 'Мониторы 24 IPS Fujitsu B24W-7 LED,7500,https://www.avito.ru/moskva/tovary_dlya_kompyutera/monitory_24_ips_fujitsu_b24w-7_le... │ └ └ <module 'codecs' from '\Python\Python39\lib\codecs.py'>

UnicodeEncodeError: 'charmap' codec can't encode character '\xb2' in position 393: character maps to 2023-05-16 18:20:34.648 | SUCCESS | parser_cls:__pretty_log:138 - Монитор LG 25UM58-P 25'' UW-FHD Цена: 10000 Описание: Продаю свой монитор в связи с приобретением нового. Состояние хорошее. За время использования чутка подпортился внешний вид (небольшие царапины на ножке). Диагональ — 25 дюймов. Тип матрицы — Ips. Разрешение — 2560 × 1080 (стороны 21:9). Время отклика — 5 мс. Яркость — 250 кд/м2. Контрастность — 1000:1. 2 порта Hdmi (в комплекте переходник vga-hdmi). + кабель Hdmi-Hdmi. Просмотров: 0 Дата публикации: сегодня в 18:00 Продавец: Частное лицо Ссылка: https://www.avito.ru/moskva/tovary_dlya_kompyutera/monitor_lg_25um58-p_25_uw-fhd_3185904982

2023-05-16 18:20:34.660 | ERROR | parser_cls:paginator:79 - An error has been caught in function 'paginator', process 'MainProcess' (31792), thread 'Thread-3' (20864): Traceback (most recent call last):

File "hon39\lib\threading.py", line 930, in _bootstrap self._bootstrap_inner() │ └ <function Thread._bootstrap_inner at 0x000002556E521550> └ <Thread(Thread-3, started 20864)>

File "ib\threading.py", line 973, in _bootstrap_inner self.run() │ └ <function Thread.run at 0x000002556E521310> └ <Thread(Thread-3, started 20864)>

File "C:\Users\Ilya\AppData\Local\Programs\Python\Python39\lib\threading.py", line 910, in run self._target(*self._args, **self._kwargs) │ │ │ │ │ └ {} │ │ │ │ └ <Thread(Thread-3, started 20864)> │ │ │ └ () │ │ └ <Thread(Thread-3, started 20864)> │ └ <bound method Window.start_scraping of <main.Window object .>> └ <Thread(Thread-3, started 20864)>

File "parser_avito-master\AvitoParser.py", line 150, in start_scraping self.run_parse() │ └ <function Window.run_parse at 0x00000255710DA700> └ <main.Window object .>

File "\parser_avito-master\AvitoParser.py", line 249, in run_parse AvitoParse( └ <class 'parser_cls.AvitoParse'>

File " (6)\parser_avito-master\parser_cls.py", line 252, in parse self.__paginator() └ <parser_cls.AvitoParse object at 0x00000255710CEBB0>

File "py", line 79, in paginator self.parse_page() └ <parser_cls.AvitoParse object at 0x00000255710CEBB0>

File "er (6)\parser_avito-master\parser_cls.py", line 126, in __parse_page self.__save_data(data=data) │ └ {'name': "Монитор LG 25UM58-P 25'' UW-FHD", 'description': 'Продаю свой монитор в связи с приобретением нового. Состояние хор... └ <parser_cls.AvitoParse object at 0x00000255710CEBB0>

File "\parser_avito-master\parser_cls.py", line 189, in __save_data writer.writerow([ │ └ <method 'writerow' of '_csv.writer' objects> └ <_csv.writer object at 0x0000025573684860>

File "\Python39\lib\encodings\cp1251.py", line 19, in encode return codecs.charmap_encode(input,self.errors,encoding_table)[0] │ │ │ │ │ └ <EncodingMap object at 0x000002556DACBBD0> │ │ │ │ └ 'strict' │ │ │ └ <encodings.cp1251.IncrementalEncoder object at 0x000002557368FBB0> │ │ └ "Монитор LG 25UM58-P 25'' UW-FHD,10000,https://www.avito.ru/moskva/tovary_dlya_kompyutera/monitor_lg_25um58-p_25_uw-fhd_31859... │ └ └ <module 'codecs' from '\Python\Python39\lib\codecs.py'>

UnicodeEncodeError: 'charmap' codec can't encode character '\xd7' in position 345: character maps to

Duff89 commented 1 year ago

Замените строку №187 в файле parser_cls на: with open(f"result/{self.title_file}.csv", mode="a", newline='', encoding='utf-8') as file:

moonshineo commented 1 year ago

У меня аналогичная проблема. Я сделал исправление - with open(f"result/{self.title_file}.csv", mode="a", newline='', encoding='utf-8') as file:

После этого он успешно спарсил один раз, но потом пошли ошибки вот такого вида:

11:57:20 - Проверка завершена
11:57:20 - Пауза 1 минут
11:58:30 - Страница успешно загружена. Просматриваю объявления
11:58:30 - Ошибка: 'charmap' codec can't decode byte 0x98 in position 891: character maps to <undefined>
11:58:30 - Проверка завершена
11:58:30 - Пауза 1 минут
12:00:34 - Страница успешно загружена. Просматриваю объявления
12:00:34 - Ошибка: 'charmap' codec can't decode byte 0x98 in position 891: character maps to <undefined>
12:00:34 - Проверка завершена
12:00:34 - Пауза 1 минут
12:01:43 - Страница успешно загружена. Просматриваю объявления
12:01:43 - Ошибка: 'charmap' codec can't decode byte 0x98 in position 891: character maps to <undefined>
12:01:43 - Проверка завершена
12:01:43 - Пауза 1 минут
moonshineo commented 1 year ago

в общем, у меня все завелось с этим параметром в 187 строке

with open(f"result/{self.title_file}.csv", mode="a", newline='', encoding='ascii', errors='ignore') as file:

Duff89 commented 1 year ago

Выглядит как решение, я проверю такой вариант и если всё ок, добавлю его в следующей версии. Спасибо

Duff89 commented 1 year ago

В связи с выходом новой версии закрываю проблему