如何调试urllib2和阿拉伯语的bug?

时间:2013-11-04 13:28:17

标签: python python-2.7 urllib2

我想要以下网站的html代码 http://www.rasekhoon.net/media/3882/page1/
我通过下面的代码获得它

file = urllib2.urlopen("http://www.rasekhoon.net/media/3882/page1/")
string= file.read()

当我打印时

    <div class="header" title="ظپط§غŒظ„ظ‡ط§غŒ ط³ط¹غŒط¯ ط­ط¯ط§ط¯غŒط§ظ† / ط³ط§ظ„ 1389 ط¨ط§ ظ…ظˆط¶ظˆط¹ 'ظ…غŒظ„ط§ط¯ ط­ط¶ط±طھ ط²ظ‡ط±ط§ ط¹ظ„غŒظ‡ط§ ط§ظ„ط³ظ„ط§ظ…'">
        <em>ظپط§غŒظ„ظ‡ط§غŒ ط³ط¹غŒط¯ ط­ط¯ط§ط¯غŒط§ظ† / ط³ط§ظ„ 1389 ط¨ط§ ظ…ظˆط¶ظˆط¹</em>&nbsp;&nbsp;
        ظ…غŒظ„ط§ط¯ ط­ط¶ط±طھ ط²ظ‡ط±ط§ ط¹ظ„غŒظ‡ط§ ط§ظ„ط³ظ„ط§ظ…
    </div>
    <div class="content richcontent" style="display:none;">

我想要下面的结果

<div class="header" title="فایلهای سعید حدادیان / سال 1389 با موضوع 'مناجات'">
        <em>فایلهای سعید حدادیان / سال 1389 با موضوع</em>&nbsp;&nbsp;
        مناجات
    </div>
    <div class="content richcontent" style="display:none;">

我怎么能解决它?

1 个答案:

答案 0 :(得分:3)

您正在将编码数据打印到控制台,而不会改变编码。

内容类型标题声明数据以UTF-8编码,但您使用拉丁编解码器将其打印到控制台。

首先将数据解码为Unicode:

response = urllib2.urlopen("http://www.rasekhoon.net/media/3882/page1/")
html = file.read().decode('UTF8')

可能无法将生成的Unicode值打印到您的控制台;如果它无法对特定代码点进行编码,那么您将获得UnicodeEncode个例外。这不是内容的问题,而是您的控制台。