Python:编码错误 - 网页内容

Posted

技术标签:

【中文标题】Python:编码错误 - 网页内容【英文标题】:Python: Encoding Error - content of web page 【发布时间】:2012-12-20 06:42:08 【问题描述】:

我正在尝试获取网页内容并对其进行解析,而不是保存在 mysql db 中。

我实际上是为编码 utf8 的网页做的。

但是当我尝试使用 8859-9 编码网页时,我得到了错误。

我获取页面内容的代码:

def getcontent(url):
    opener = urllib2.build_opener()
    opener.addheaders = [('User-agent', 'Magic Browser')]
    opener.addheaders = [('Accept-Charset', 'utf-8')]   
    #print chardet.detect(response).get('encoding)
    response = opener.open(url).read()
    opener.close()
    return response



url     = "http://www.meb.gov.tr/duyurular/index.asp?ID=4"
contentofpage = getcontent(url)
print contentofpage
print chardet.detect(contentofpage)
print contentofpage.encode("utf-8")

页面内容的输出: ... E�itim Teknolojileri Genel M�d�rl��� ...

'confidence': 0.7789909202570836, 'encoding': 'ISO-8859-2'


Traceback (most recent call last):
  File "meb.py", line 18, in <module>
    print contentofpage.encode("utf-8")
    UnicodeDecodeError: 'ascii' codec can't decode byte 0xee in position 458: ordinal not     in range(128)

其实页面是土耳其语页面,编码是8859-9。

当我尝试使用默认编码时,我看到的都是 ��� 而不是一些字符。我如何将页面内容转换为 utf-8 或土耳其语 (iso-8859-9)

当我使用 unicode(contentofpage)

得到

Traceback(最近一次调用最后一次): 文件“meb.py”,第 20 行,在 打印 unicode(contentofpage) UnicodeDecodeError:“ascii”编解码器无法解码位置 458 中的字节 0xee:序数不在范围内(128)

有什么帮助吗?

【问题讨论】:

【参考方案1】:

我想你想解码,而不是编码,因为它已经编码了。

print contentofpage.decode("iso-8859-9")

产生如下样本:

Eğitim Teknolojileri Genel Müdürlüğü

【讨论】:

print contentofpage.decode("iso-8859-9") UnicodeEncodeError: 'ascii' codec can't encode character u'\xee' in position 458: ordinal not in range(128)跨度> 确保获取内容后直接解码。 contentofpage = getcontent(url),然后是print contentofpage.decode('iso-8859-9')

以上是关于Python:编码错误 - 网页内容的主要内容,如果未能解决你的问题,请参考以下文章

网页内容以&#开头以;结尾的编码(&#22235;)转汉字--python

正文内容 python3编码问题

网页相关状态编码(相关错误提示)

转载python抓取网页时候,判断网页编码格式

python网络爬虫静态网页抓取

Python 获取第一个网页内容