Чтение сайта с японским - PullRequest
2 голосов
/ 03 декабря 2011

UnicodeDecodeCharacter 'ascii' cocec can't decode byte 0xe3 at position 348: ordinal not in range(128)

У меня есть urllib.urlopen -иный веб-сайт, и у меня есть .readlines(), просматривая его по абзацам в поисках определенного текста.

Я читаю извеб-сайт, на котором есть несколько японских символов (Я ХОЧУ Пропустить ЭТУ ЧАСТЬ), но мой код вылетает при чтении поверх него.

Или, если проще, могу ли я преобразовать весь urllib.urlopen вUnicode, чтобы я не получил эту ошибку ASCII, и если да, то как мне искать через нее?

1 Ответ

2 голосов
/ 03 декабря 2011

Вы можете прочитать необработанные байты, преобразовать их в ascii (игнорируя non-ascii), а затем разделить строки:

import urllib

url = 'http://www.asahi.com/'
u = urllib.urlopen(url)
rawdata = u.read()
u.close()
asciidata = rawdata.decode('ascii', 'ignore')
asciilines = asciidata.splitlines(False)

for line in asciilines[:40]:
    print line

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

...