2012-04-06 4 views
2

私はいくつかのウェブサイトのセグメントを取得しようとしています。スクリプトは動作しますが、それはá、é、í、ó、úなどのアクセントを持つWebサイトです。urllib:utf-8でエンコードされたサイトのソースコードを取得

urllibまたはurllib2を使用してサイトを取得すると、utf-8はこれらのアクセントをサポートするため、サイトソースコードはutf-8でエンコードされません。

それは次のメタタグを含むように私は、標的部位がUTF-8でエンコードされていることを信じている:

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

私のPythonスクリプト:

opener = urllib2.build_opener() 
opener.addheaders = [('Accept-Charset', 'utf-8')] 
url_response = opener.open(url) 
deal_html = url_response.read().decode('utf-8') 

しかし、私は見ての結果を得続けますUTF-8にエンコードされていないようです。

例えば: "ミラン" のウェブサイトでは、= "ミル\ xe1nは" urllib2のは、それ

任意の提案をフェッチした後?

答えて

2

スクリプトが正しく動作しています。 "\xe1"文字列は、復号化によって生成されたunicodeオブジェクトの表現です。例えば、A:

>>> "Mil\xc3\xa1n".decode('utf-8') 
u'Mil\xe1n' 

"\xc3\xa1"配列は、発音区別符号マークとleter AのUTF-8配列です。

+0

私は "Mil \ xc3 \ xa1n"を印刷するとMilanを返します。これは完璧です。しかし、ソースコードから文字列を取り出してリストに追加すると、 "Mil \ xc3 \ xa1n"という文字列が得られます。これをリストや辞書に表示するにはどうすればいいですか? –

+1

リストは、その中の各項目で 'repr()'を呼び出します。これが、拡張文字がエスケープされる理由です。デバッグの目的でより読みやすい表現が必要な場合は、 '[mylistのxのstr(x)]'のようなことをしてください。 – kindall

関連する問題