番茄的梦想

那一抹夕阳

  博客园  :: 首页  ::  :: 联系 :: 订阅 订阅  :: 管理

报错的代码:

url= 'http://kaijiang.500.com/shtml/ssq/19001.shtml'
page =urllib.request.urlopen(url)
content = page.read().decode('gb2312')

报这个错的原因是获取到的网页内容是经过压缩了的,打开url可以看到请求head

Accept-Encoding:gzip, deflate

一种方式是请求时把Accept-Encoding设为空,这样的话网页数据未压缩,会相对比较大,增加网络传输时间

另一种方式就是对请求后的数据解压,显然这个方式处理会更快,如下

content = gzip.decompress(page.read()).decode('gb2312')

可是修改之后发现运行还是报错,这时候发现应该是因为网页中含有编码集之外的字符(网页内容指定charset是gb2312),就算加到更大范围还是报错(PS:汉字字符集范围 gb2312 < gbk < gb18030)

这时候选择忽略这些无法解码的字符

content = gzip.decompress(page.read()).decode('gb2312','ignore')

再运行代码,发现这个问题已经解决了

posted on 2023-08-21 10:14  番茄的梦想  阅读(334)  评论(0编辑  收藏  举报