我在爬取一个论坛的页面的时候,遇到一个问题:有个别页面没法转码。
比方说论坛的列表页,我要爬取 10 页,然后转成 Unicode 码,保存下来,大部分页面都是正常的,但是会有两个页面没有转成 Unicode 。但是这 10 个页面都是可以取到数据的,现在问题就出在转码上。我很奇怪,这 10 个页面头部都是下面的代码,都是用的 gbk 编码。为什么有的没法转换。
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">\n<html xmlns="http://www.w3.org/1999/xhtml">\n<head>\n<meta http-equiv="Content-Type" content="text/html; charset=gbk" />
我用下面的语句进行转换
def encoding(bm):
types = ['utf-8','utf-16','gb2312','gbk']
printtxt(bm)
for type in types:
try:
return bm.decode(type) #我把这里的 type 换成'gbk'后,该能转换的还能转换,那两个还是没有转成。
except:
pass
为什么 10 个页面都是一样的,有的能转成,有的转不成呢?
比方说论坛的列表页,我要爬取 10 页,然后转成 Unicode 码,保存下来,大部分页面都是正常的,但是会有两个页面没有转成 Unicode 。但是这 10 个页面都是可以取到数据的,现在问题就出在转码上。我很奇怪,这 10 个页面头部都是下面的代码,都是用的 gbk 编码。为什么有的没法转换。
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">\n<html xmlns="http://www.w3.org/1999/xhtml">\n<head>\n<meta http-equiv="Content-Type" content="text/html; charset=gbk" />
我用下面的语句进行转换
def encoding(bm):
types = ['utf-8','utf-16','gb2312','gbk']
printtxt(bm)
for type in types:
try:
return bm.decode(type) #我把这里的 type 换成'gbk'后,该能转换的还能转换,那两个还是没有转成。
except:
pass
为什么 10 个页面都是一样的,有的能转成,有的转不成呢?