Форум сайта python.su
# -*- coding: utf-8 -*- import codecs, sys, os import tempfile import subprocess import glob from BeautifulSoup import BeautifulSoup import datetime import urllib2 import re sys.stdout = codecs.getwriter('cp866')(sys.stdout, errors='replace') f = urllib2.urlopen(urllib2.Request('http://www.elitestatus.ru/mebel.php?id_cat=6&id_fab=94')) abcde = f.read() soupLin = BeautifulSoup(f.read())
abcde = f.read()возникает ошибка на строке “soupLin = BeautifulSoup(f.read())”:
UnicodeDecodeError: ‘ascii’ codec can't decode byte 0xf2 in position 0: ordinal not in range(128)Не могу понять, что происходит, крыша съехала полностью :(.
Офлайн
ну. если ты делаешь abcde = f.read(),
то весь файл f считывается целиком, и супу остается пустая строка. Соотвественно ругаться ему не на что =)
Отредактировано (Апрель 27, 2008 15:19:19)
Офлайн
Спасибо!
Что надо сказать супу, чтобы прочитал? Файл в кодировке cp1251 сервером отдаётся, вроде.
Офлайн
Сдругими URL того же сайта работает, вроде.
Например, с http://www.elitestatus.ru/mebel.php?id_cat=6&id_fab=62.
Не могу понять, в чём разница…
Офлайн
Поставил ActivePython 2.5.2.2 - не помогло.
http://mail.python.org/pipermail/python-bugs-list/2007-February/037082.html
Помогло. Вроде заработало.
Офлайн
У меня все работает =)
Ошибок не пишет. Попробуй или просто декодировать в юникод или перекодировать в utf-8.
data = f.read()
data = data.decode('cp1251')
#или так
data = data.decode('cp1251').encode('UTF8')
soupLin = BeautifulSoup(data)
Офлайн
Нет, без патча в посте #5 у меня не работает. Ни с decode, ни с encode.
С патчем же работает во всех ситуациях.
shiza, у тебя WinXP?
Офлайн
да. winxp
может ошибка вылезает не при импорте в суп.
а при выводе на коносль после супа?
а ведь консоль имеет кодировку cp866
Офлайн
Нет, при импорте в суп. Ошибка ведь имеет номер строки :).
Офлайн