2011-01-22 17 views
1

私はlxml.htmlを使用してPythonでhtmlページを解析しようとしています。lxml.htmlでHTMLを解析する際の文字セットの問題

私は、次のコードを使用:page.htmlは私がどのプロキシおよびエンコーディング転送の使用に関するいくつかの作業を行う前に書いたプロキシプログラムをダウンロードされたウェブページである

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

を。

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

ところで、GB2312は中国の文字セットの一種である:ページのcharset宣言はこのようなものですしながら、ファイルのエンコードはUTF-8に変更されました。

最初は上記のPythonコードを実行しましたが、空のhtml構造だけが印刷されていましたが、これは間違っていました。

私はいくつかの方法を試みましたが、最後に、charset宣言のために問題が発生していることがわかりました。 'charset = gb2312'を空の文字列に置き換えたとき、

しかし、なぜこのようなことが起こるのかよくわかりません。そして、私は問題を正しい方法で解決するか、それともただの偶然であるか?

+0

関連:[HTMLエンコーディングとlxml解析](http://stackoverflow.com/questions/15302125/html-encoding-and-lxml-parsing) – jfs

答えて

2

http://lxml.de/parsing.html#python-unicode-stringsは言う:

あなたは、一般的に はパーサにそれを渡す前にUnicodeに XML/HTMLデータを変換することは避けてください。 は遅く、エラーが発生しやすいです。

+0

私の質問にお答えいただきありがとうございます〜 – taijirobot

関連する問題