解决python错误 UnicodeDecodeError: 'gb2312' codec can't decode byte 0x8b in position 1: illegal multibyte sequence
2024-10-20 02:39:33
报错的代码:
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')
再运行代码,发现这个问题已经解决了(如果你看了我前面一篇双色球分析的程序,现在应该知道为什么有时会报错了~~)
最新文章
- (47) odoo详细操作手册
- 【转】常用聚类算法(一) DBSCAN算法
- sql sever获取数据库还原时间语句
- POJ 1222 EXTENDED LIGHTS OUT (高斯消元)
- javascript 刷新当前页面
- 递归,回溯,DFS,BFS的理解和模板【摘】
- OOP-ECMAScript - 深入理解Javascript
- LCS记录路径
- HDU 2437 Jerboas (剪枝搜索)
- HDU_2033——时间加法
- 好看的Select下拉框是如何制造的
- QT5的中文路径和目录问题小记
- 使用Navicat Premium 链接本地数据库的方法
- indexOf和lastIndexOf方法
- Layer 使用
- css实现横向带箭头步骤流程效果
- websocket作用
- echarts tooltip 自定义提示信息添加圆点
- sql server误删数据恢复delete(低效版)
- Can&#39;t find bundle for base name test.properties, locale zh_CN