Уведомления

Группа в Telegram: @pythonsu

#1 Сен. 27, 2012 05:21:55

daria_kh
Зарегистрирован: 2012-09-17
Сообщения: 6
Репутация: +  0  -
Профиль   Отправить e-mail  

Проблемы с кодировкой

Доброго времени суток! Пытаюсь спарисить главную страницу сайта, одно регулярное выражение выдает нормальный результат и все выводит, а из-за другого консоль ругается на кодировку.
Вот код:
urr = urlopen("http://skygsn.com").read()
urr1 = urr.decode('windows-1251')
pattern_key = re.findall('<meta\s+name\=\'keywords\'\s+content\.*)>', urr1) #работает
pattern_content = re.findall('<.*>(.*)<\/.*>', urr1)# ошибка can't encode character \xa9

Пробовала ставить консольную кодировку cp866 - на это выдает иероглифы.
Помогите исправить

Офлайн

#2 Сен. 27, 2012 05:46:46

PooH
От:
Зарегистрирован: 2006-12-05
Сообщения: 1948
Репутация: +  72  -
Профиль   Отправить e-mail  

Проблемы с кодировкой

Ошибку то выкидывает явно не здесь, а далее в коде. Что вы дальше делаете с pattern_content? Пишите в файл или выводите в консоль? Покажите код

PS: Кстати, у вас и в регулярке ошибка, если вы хотели выбрать текст из тегов будете сильно разочарованы



Вот здесь один из первых отарков съел лаборанта. Это был такой умный отарк, что понимал даже теорию относительности. Он разговаривал с лаборантом, а потом бросился на него и загрыз…

Отредактировано PooH (Сен. 27, 2012 05:53:46)

Офлайн

#3 Сен. 27, 2012 06:16:05

daria_kh
Зарегистрирован: 2012-09-17
Сообщения: 6
Репутация: +  0  -
Профиль   Отправить e-mail  

Проблемы с кодировкой

Дальше просто вывожу в консоль принтом:
print (pattern_content)

Подскажите ошибку в регулярке, если не сложно

Офлайн

#4 Сен. 27, 2012 06:52:38

PooH
От:
Зарегистрирован: 2006-12-05
Сообщения: 1948
Репутация: +  72  -
Профиль   Отправить e-mail  

Проблемы с кодировкой

daria_kh
Дальше просто вывожу в консоль принтом:
print (pattern_content)
Символ \xa9 - это символ копирайта, вы консоль виндоус его все равно не выведете. Так что лучше, наверное так:
print (pattern_content.encode('cp1251'), errors='ignore')
возможно кодировка cp866
daria_kh
Подскажите ошибку в регулярке, если не сложно=)
.* - жадный поиск, он будет захватывать, не до первого вхождения, а до последнего, а без флага re.DOTALL под символ . не попадут переводы строк.
А еще вспомним про вложение тегов, теги без содержимого, просто неверный html. Мне кажется, что регулярка в данном случае не лучшая идея, может лучше взять парсер html?



Вот здесь один из первых отарков съел лаборанта. Это был такой умный отарк, что понимал даже теорию относительности. Он разговаривал с лаборантом, а потом бросился на него и загрыз…

Офлайн

#5 Сен. 27, 2012 08:53:24

daria_kh
Зарегистрирован: 2012-09-17
Сообщения: 6
Репутация: +  0  -
Профиль   Отправить e-mail  

Проблемы с кодировкой

Да, HTMLParser действительно лучше, спасибо

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version