Проблема с набором символов при разборе HTML с помощью lxml.html - PullRequest
1 голос
/ 22 января 2011

Я пытаюсь проанализировать HTML-страницу в Python, используя lxml.html.

Я использовал следующий код:

import lxml.html as H
page = open('page.html', 'r').read()
doc = H.fromstring(page)
print H.tostring(doc)

page.html - это веб-страница, которую яскачанный с прокси-программой, которую я написал ранее, которая делает некоторую работу по использованию прокси и передачи кодировки.Кодировка файла была изменена на utf-8, в то время как объявление кодировки на странице выглядит следующим образом:

<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />

Кстати, gb2312 является своего рода набором китайских символов.

Вво-первых, я запустил приведенный выше код на python, но он напечатал только пустую структуру html, которая является неправильной, а не то, что я хотел.: когда я заменил 'charset = gb2312' пустой строкой, код синтаксического анализа работал, как я и ожидал.

Но я не совсем понимаю, почему это произошло.И способ, которым я решил проблему, правильный метод или просто совпадение?

1 Ответ

2 голосов
/ 22 января 2011

http://lxml.de/parsing.html#python-unicode-strings говорит:

Как правило, следует избегать преобразования данных XML / HTML в Unicode перед передачей их в анализаторы.Он медленнее и подвержен ошибкам.

...