python爬取页面的时候如何过滤非GBK编码的不读取?

socket 发布于 2013/08/01 18:48
阅读 822
收藏 0

就是我要爬一个页面的数据,这个页面是GBK的,但是里面会有人回复非GBK的帖子,比如傘€傘€傘€傘€ ”,这样爬出来的字符如果要decode('gbk')的时候会报错

>>> new.decode('gbk')
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
UnicodeDecodeError: 'gbk' codec can't decode byte 0x80 in position 1875: illegal multibyte sequence
那怎么样才能过滤掉这些非GBK的字符呢??
加载中
1
铂金胖子
铂金胖子
decode('gbk','ignore')
socket
socket
这个非常好使~~谢谢~~
0
PepsiZero
PepsiZero
加上异常捕获,但是写个函数通吃大部分编码会更好一些
0
铂金胖子
铂金胖子

是这样的吗?

def mdcode( str, encoding='utf-8' ):
    if isinstance(str, unicode):
        return str.encode(encoding)

    for c in ('utf-8', 'gb18030','gbk', 'gb2312','utf-16'):
        try:
            if encoding == 'unicode':
                return str.decode(c)
            else:
                return str.decode(c).encode( encoding )
        except:
            pass
    raise 'Unknown charset'

socket
socket
这个霸气啊~~
返回顶部
顶部