2011-08-29 5 views
1

これは私のコードです、皆さんもテストしてみることができます。私はいつもページソースの代わりに乱れた文字を取得します。urllib2を使用してURLを開いているうちに乱雑な文字が表示されるのはなぜですか?

通常
Header = {"User-Agent": "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.2.8) Gecko/20100722 Firefox/3.6.8 GTB7.1 (.NET CLR 3.5.30729)"} 

Req = urllib2.Request("http://rlslog.net", None, Header) 

Response = urllib2.urlopen(Req) 

Html = Response.read() 

print Html[:1000] 

Htmlは、ページのソースでなければなりませんが、それはめちゃめちゃアップ文字のトンとなりました。なぜ誰が知っていますか?

はところで:私はあなたがハエの圧縮をサポートしているユーザーエージェントを使用して要求を行うのpython 2.7

+0

問題は私にとってうまくいきます。たぶん、あなたが応答を出力する方法でいくつかの単純な間違い? – Kapep

+0

@kapep:本当ですか?私は単に「Html [:100]」を印刷するだけで、彼らはすべて台無しです。あなたは何のpythonバージョンですか? – Shane

+0

印刷部分が含まれていないので、それは野生の推測でした。私のために期待どおりに動作します。 2.6.4を使う。 – Kapep

答えて

1

Bruceは既に提案しているように、圧縮に問題があるようです。サーバーはgzip圧縮コンテンツを返しますが、urllib2は自動gzip圧縮をサポートしていません。実際には、サーバーは私が知る限り、この場合不正な動作をしています。Accept-encoding: gzipヘッダーが存在する場合にのみコンテンツを圧縮する必要があります(自分自身を提供するか、サポートしている場合はクライアントによって自動的に追加されます)。

httplib2のような自動的にサポートするライブラリを使用するか(問題のページでテストして動作します)、または解凍してください(方法についてはthis SO questionへの回答を参照してください。その質問では、サーバーによって返されたヘッダがチェックされ、コンテンツがgzip圧縮されているかどうかが確認されます)

+0

ありがとう、男! – Shane

0

上です。出力がgzip圧縮されていないことを確かめますか? zlib moduleおよび/または印刷ヘッダーを実行してみてください

関連する問題