Найти - Пользователи
Полная версия: Проблемы с кодировкой
Начало » Python для новичков » Проблемы с кодировкой
1
daria_kh
Доброго времени суток! Пытаюсь спарисить главную страницу сайта, одно регулярное выражение выдает нормальный результат и все выводит, а из-за другого консоль ругается на кодировку.
Вот код:
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 - на это выдает иероглифы.
Помогите исправить
PooH
Ошибку то выкидывает явно не здесь, а далее в коде. Что вы дальше делаете с pattern_content? Пишите в файл или выводите в консоль? Покажите код

PS: Кстати, у вас и в регулярке ошибка, если вы хотели выбрать текст из тегов будете сильно разочарованы
daria_kh
Дальше просто вывожу в консоль принтом:
print (pattern_content)

Подскажите ошибку в регулярке, если не сложно
PooH
daria_kh
Дальше просто вывожу в консоль принтом:
print (pattern_content)
Символ \xa9 - это символ копирайта, вы консоль виндоус его все равно не выведете. Так что лучше, наверное так:
print (pattern_content.encode('cp1251'), errors='ignore')
возможно кодировка cp866
daria_kh
Подскажите ошибку в регулярке, если не сложно=)
.* - жадный поиск, он будет захватывать, не до первого вхождения, а до последнего, а без флага re.DOTALL под символ . не попадут переводы строк.
А еще вспомним про вложение тегов, теги без содержимого, просто неверный html. Мне кажется, что регулярка в данном случае не лучшая идея, может лучше взять парсер html?
daria_kh
Да, HTMLParser действительно лучше, спасибо
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB