zoukankan      html  css  js  c++  java
  • Python的编码问题

    在看《Dive Into Python》有一章是对XML的处理,其中写着

    import sys

    sys.setdefaultencoding('iso-8859-1')

    而我使用urlopen写一个采集小程序时,遇上了一个编码问题。以抓取百度首页为例:

    sock = urllib.urlopen("http://www.baidu.com/")
    htmlSource = sock.read()
    sock.close()
     
    当打印htmlSource时,会发现出现乱码的情况了,原因是百度默认的编码是gb2312,而python默认的编码格式为ascii(可通过打印sys.getdefaultencoding() 显示出来)
     
    为什么import sys后,然后使用sys.不会自动提示显示出setdefaultencoding呢?之后搜索了一下:
    python的初始化脚本site.py会把sys模块的setdefaultencoding方法删除,python在初始化完毕之后,禁止用户改变默认编码。

    以上内容引用至【python改变默认编码

    还有就是在抓取到页面后,需要对页面进行一个解码动作(decode),完整的demo代码将会如下所示:

       1: #coding:utf-8
       2: import urllib
       3: import sys
       4:  
       5: reload(sys)
       6:  
       7: sys.setdefaultencoding('utf-8')
       8:  
       9: print sys.getdefaultencoding()
      10:  
      11: sock = urllib.urlopen("http://www.baidu.com/")
      12: htmlSource = sock.read().decode('GBK')
      13: sock.close()
      14:  
      15: print htmlSource
  • 相关阅读:
    关于数据集的划分--训练集、验证集和测试集
    关于过拟合的问题总结
    paddle 09-13
    关于NLP多分类任务评价指标的总结
    数组题解
    多进程-协程
    多任务-进程
    多任务-线程
    网络-tcp
    网络-udp
  • 原文地址:https://www.cnblogs.com/meteoric_cry/p/2227175.html
Copyright © 2011-2022 走看看