惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

Hugging Face - Blog
Hugging Face - Blog
WordPress大学
WordPress大学
Microsoft Azure Blog
Microsoft Azure Blog
F
Fortinet All Blogs
B
Blog RSS Feed
Last Week in AI
Last Week in AI
The Cloudflare Blog
大猫的无限游戏
大猫的无限游戏
人人都是产品经理
人人都是产品经理
P
Proofpoint News Feed
H
Hackread – Cybersecurity News, Data Breaches, AI and More
Microsoft Security Blog
Microsoft Security Blog
博客园 - 三生石上(FineUI控件)
Y
Y Combinator Blog
GbyAI
GbyAI
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
小众软件
小众软件
雷峰网
雷峰网
C
Check Point Blog
阮一峰的网络日志
阮一峰的网络日志
博客园 - 叶小钗
博客园 - 司徒正美
U
Unit 42
量子位

博客园 - 番茄的梦想

Debian防火墙的ufw的使用 Linux—nvm教程 LNMP一键安装包安装的mysql远程连接不上的问题 linux service文件格式 linux if命令 微软sdk及运行时下载地址 pip相关介绍 结构(位置)伪类选择器 如何清除mstsc记录 ubuntu开启远程桌面功能 使用Windows远程桌面工具来远程连接控制Ubuntu系统 缓存头Cache-Control的含义和使用 正则表达式 以A开头B结尾 取中间的内容 nginx 不带www的域名跳转www域名 IIS配置导入导出 CSS中hover选择器的使用详解 html 锚点三种实现方法 重置自增长id 如何解决Visual Studio2012 与此版本的Windows不兼容
解决python错误 UnicodeDecodeError: 'gb2312' codec...
番茄的梦想 · 2023-08-21 · via 博客园 - 番茄的梦想

报错的代码:

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')

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