报错的代码:

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

再运行代码,发现这个问题已经解决了(如果你看了我前面一篇双色球分析的程序,现在应该知道为什么有时会报错了~~)

最新文章

  1. (47) odoo详细操作手册
  2. 【转】常用聚类算法(一) DBSCAN算法
  3. sql sever获取数据库还原时间语句
  4. POJ 1222 EXTENDED LIGHTS OUT (高斯消元)
  5. javascript 刷新当前页面
  6. 递归,回溯,DFS,BFS的理解和模板【摘】
  7. OOP-ECMAScript - 深入理解Javascript
  8. LCS记录路径
  9. HDU 2437 Jerboas (剪枝搜索)
  10. HDU_2033——时间加法
  11. 好看的Select下拉框是如何制造的
  12. QT5的中文路径和目录问题小记
  13. 使用Navicat Premium 链接本地数据库的方法
  14. indexOf和lastIndexOf方法
  15. Layer 使用
  16. css实现横向带箭头步骤流程效果
  17. websocket作用
  18. echarts tooltip 自定义提示信息添加圆点
  19. sql server误删数据恢复delete(低效版)
  20. Can&#39;t find bundle for base name test.properties, locale zh_CN

热门文章

  1. css样式篇
  2. head中的base标签:设置超链接的默认行为
  3. Java中的参数验证(非Spring版)
  4. 第九届极客大挑战——怎么又是江师傅的秘密(java反序列化)
  5. 读《TCP/IP详解》:TCP
  6. AI2(App Inventor 2)离线版服务器(AI伴侣2.47版)
  7. 队列解密QQ号
  8. 【已采纳】supervisor在服务器端(linux),如何一直运行你的python代码
  9. JAVAWEB复习day01
  10. 201871010134-周英杰《面向对象程序设计(java)》第十六周学习总结