2014-05-30 2 views
0

Я пытаюсь разобрать страницу HTML, как этотpython Parsing html page: как декодировать char?

# coding: utf8 
[...] 
def search(self, a, b): 
    word = self.champ_rech_canal.get_text() 
    url_canal = "http://www.canalplus.fr/pid3330-c-recherche.html?rechercherSite=" + mot_canal 
    try: 
     f = urllib.urlopen(url_canal) 
     self.feuille_canal = f.read() 
     f.close() 
    except: 
     self.champ_rech_canal.set_text("La recherche a échoué") 
     pass 
    print self.feuille_canal 

Результат хорош, и у меня есть, как «е» или «О» Как я могу расшифровать его? Пробовал:

self.feuille_canal = self.feuille_canal.decode("utf-8") 

Результат:

UnicodeDecodeError: 'utf8' codec can't decode byte 0xe9 in position 8789: invalid continuation byte 

ответ

1

Вы пытаетесь декодировать ISO-8859-1 страница как UTF-8, который не может работать. См. Заголовок содержимого в возвращаемом HTML:

<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" /> 
+0

Спасибо за ваш ответ. Да, есть эта строка в HTML-коде. Могу ли я попытаться заменить его? – Guillaume

+1

Просто используйте декодирование с '" iso-8859-1 "'. Кодирование текста не изменится волшебным образом, если вы измените текст. – Matthias

+0

Да, Маттиас прав, вы должны декодировать кодировку, данную сайтом. – Joe